「オペレーター」+「モーション」の動作に一貫性がないのはなぜですか?


17

これは長い間私を悩ませてきたものですが、私はこれについて尋ねることを一度もしませんでした。バッファ内のテキストは次のようになっているとします。

Hello
World

2行目のどこかにカーソルを置いて、そうするとyk、カーソルは1行目で終了します。これは、演算子に加えて動きもカーソルを動かすことを意味するようです。ただし、行1で開始してから実行するyjと、カーソルは同じ場所に残ります。同じ不整合は、多くのキーで発生します。

Moves   Doesn't move
gg      G
h       l
{       }
(       )
T       t
F       f
?       /

それで、この振る舞いは何ですか?これは予想され、十分に文書化されていますか?これに名前はありますか?オーバーライドできますか?

一般的に、「後方に移動し、前方に移動しない」ように見えますが、オペレータ+モーションがカーソルを移動するかどうかを明確に判断する方法はありますか?


2
yコマンドではなく、演算子です。
ロメイン

回答:


16

から :h operator

演算子を適用した後、カーソルは主に操作されたテキストの先頭に残ります。たとえば、「yfe」はカーソルを移動しませんが、「yFe」はカーソルをヤンクが開始した「e」まで左に移動します。

何が起こっているのかというと、カーソルがテキストオブジェクトの先頭に移動しているということです。視覚モードを有効にすると、より明確になります。テキストは、操作される前に選択されていると考えることができます。vby意味を確認するために使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.