vim では、なぜ:-1j
上の行と結合するのでしょうか?
たとえば、:g/^ /-1j
スペースで始まるすべての行を結合します。
コマンドは、それがどのように発生するかを理解すると覚えやすくなります。この場合、私は:g/^ /-1J
-1
上の行に移動し、J
下の行と結合します。
答え1
コマンドラインで通常のコマンドを使用することはできませんそのまま。
では:g/^ /-1j
、j
は の省略形です:join
。1 行上 (-1
の場合もあります-
) に移動して、 を実行します:join
。
では:g/^ /-1J
、J
Vim にとって何も意味しません。コンテキスト外で通常モードのコマンドを使用しているため、基本的に、-1
明確なエラー メッセージをエコーする以外は何も行われません。
Vim では、通常モードのコマンドではなく、Ex コマンドが想定されています。
コロンは 1 回だけ必要なので、Ex コマンドを認識していないために混乱が生じる可能性があります。コロンをいくつか追加すると、完全なコマンドがよりわかりやすくなるでしょう。
:g/^ /:-1:j
コマンドラインで通常モードのコマンドを使用するには、次を使用します:norm
。
:g/^ /-1norm J
答え2
には 2 種類のコマンドがありますvi
。ファイル内の任意の場所のコマンド モードから直接呼び出すことができるコマンド (この種のコマンドに特定の名前があるかどうかはわかりません) と、文字ではex
なく行に対して具体的に操作し、:
呼び出すために文字を必要とする からのコマンドがあります。
通常、ex
コマンドとともに使用できるのは コマンドのみです:g
。