私は:g
vimでコマンドを使用しています。:cn
で見つかった行に直接ジャンプする方法はあり:g
ますか?
:h :g
そのような施設は含まれていないようです。
で何をしたかによります:g
。
:g
コマンドが一致したパターンを変更しなかった場合は、 を押しn
て次の一致した行に移動できます。
しかし、パターンを変更した場合、たとえば、やした場合:g/foo/d
、コマンド:g/foo/s/foo/bar/g
を発行した後、それらの行はそこにありません。:g
その後、それらの行に再び到達する方法はありません。
パターンの一致に連続してジャンプする通常の方法は、グローバル コマンドではなく、通常の search を使用することです。これは、/<pattern>
、そしてn
連続した一致の場合です。
グローバル コマンドは、連続していない一連の行に対して:g
別のコマンドを実行するために使用されます。連続する一連の行の場合は、範囲で十分です。例: .:1,5<command>
ただし、何らかの理由でグローバル コマンドを使用する必要がある場合、または単に記録のために、 を使用して必要なことを行う方法があります:g
。
Vim のヘルプから:
When using "global" in Ex mode, a special case is using ":visual" as a
command. This will move to a matching line, go to Normal mode to let you
execute commands there until you use |Q| to return to Ex mode. This will be
repeated for each matching line. While doing this you cannot use ":global".
To abort this type CTRL-C twice.
全文を見るには、:h multi-repeat
.
したがって、段階的に、それは次のようになります。
exモードに入る( を押すQ
)。
これはコマンドライン モードに似ていますが、コマンドの実行後に通常モードに戻ることはなく、先頭の:
. ここから通常モードに戻る場合に:visual
使用します。
サブコマンドを実行するグローバル コマンドを実行:visual
します。これは、:g/<pattern>/visual
です。
これにより、試合ごとに通常モードになります。毎回、すべての vim のパワーを使用して、その試合でやりたいことを何でも行うことができます。終了したら、ex モードに戻り (Q
もう一度押すと)、次の試合が続行されます。
最後の試合が終わると、再びexモードになります。入力:visual
して通常モードに戻ります。
必要に応じて、の代わりに:grep
orを使用するだけで、一致する行がクイックフィックス リストに追加されます。(場所のリストを入力するには、コマンドの l バリエーションを使用します)。:vimgrep
:g