vi(m)のいくつかの動作を見てみましょう。サンプルラインを使用しました。
AA BBB
これらの調査の主題として、各実験について行の先頭にカーソルを置き、通常モードで開始しました。実験は通常モードでも終了し、rX
最終カーソル位置を示す閉じる操作を追加しました。
tB
、、、、 4つfB
のw
アクションを見てください3l
。最初はカーソルを前のスペースに移動し、BBB
他のものは最初のスペースに移動しますB
。それは、
tBrX # AAXBBB
fBrX # AA XBB
wrX # AA XBB
3lrX # AA XBB
次に、ドキュメントが削除コンテキストでこれらの移動を実行する方法を見てみましょう。
ウィム:
d{motion} Delete text that {motion} moves over
FreeBSD vi(1) のマニュアルページ:
d motion Delete the region of text described by ... motion
したがって、これは削除と動きの構成に関する単純で明確な概念を表します。この時点で、削除範囲が含まれているか排他的であるかを除いて、ほとんどすべてが明確に見えます。移動後に場所を削除するか維持するかを指定します。
もしそうなら排他的、上記の作業の接頭辞を使用する場合は、以下d
をすべて削除する必要がありますX
。
dtBrX # XBBB
dfBrX # XBB
dwrX # XBB
d3lrX # XBB
もしそうなら含まれる、上記の位置X
も削除されるため、最終位置は後続の位置です。つまり、別の文字が飲み込まれるため、次のような結果が得られます。
dtBrX # XBB
dfBrX # XB
dwrX # XB
d3lrX # XB
今どのように見えるか見てみましょう実生活:
dtBrX # XBB
dfBrX # XB
dwrX # XBB
d3lrX # XBB
つまり、構成は次のようになります。含まれるしかし、最初の2つのタスクの場合排他的後者の場合!これを説明できる原理はありますか?
また、c
Vimのドキュメントに で説明されていますDelete {motion} text and start insert
。仕様によると、次の後に通常モードに戻ると、次のc
ようc{motion}<ESC>l
な効果があると予想されます。d{motion}
vimの `ESC`がカーソルを元の位置に戻すのはなぜですか?、<ESC>
カーソルを左に移動させる効果があるため、l
通常/挿入モードを前後に位置を維持するには補償が必要です)。ほぼ終わりました。
ctB<ESC>lrX # XBB
cfB<ESC>lrX # XB
cw<ESC>lrX # XBBB
c3l<ESC>lrX # XBB
...c
次のように組み合わせると、他の効果のみが表示されますw
。この操作は前の空白、BBB
つまり移動されたターゲットの前の文字も保存します!この行動の論理は何ですか?
答え1
d
それ自体は包括的でも排他的でもありません。これ運動はい。各モーションのヘルプは、包括的なものか排他的なものかを示します。
f
f{char} To [count]'th occurrence of {char} to the right. The
cursor is placed on {char} |inclusive|.
t
t{char} Till before [count]'th occurrence of {char} to the
right. The cursor is placed on the character left of
{char} |inclusive|.
<S-Right> or <S-Right> w
w [count] words forward. |exclusive| motion.
l or l
<Right> or <Right> <Space>
<Space> [count] characters to the right. |exclusive| motion.
詳細については、次を参照してください。:h inclusive
。
つまり、構成には最初の2つの楽章が含まれますが、最後の2つの楽章は除外されます。これを説明できる原理はありますか?
f
とはt
包括的w
で排他的と見なすことができますl
。
w と併用すると
c
他の効果があります。この操作は以前のスペースも保存しますBBB
。
これは文書にも記載されている特別なケースです。もう少し下を見てください:h word
:
Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is
on a non-blank. This is because "cw" is interpreted as change-word, and a
word does not include the following white space.