通常モードのneovim0.4.3-3では、このコマンド:
:put=range(1,4)
1から4までの番号付きリストを配置します
しかし、私がこのように空白行にのみ数字を入れたいとき:
:g/^$/norm :put=range(1,14)
期待どおりに機能していません-空の行を強調表示するだけで、putが機能していません、なぜですか?
:normal
コマンドは完全なコマンドのみを実行し、:put
Exコマンドの最後に実際に実行するための「Enter」がありません。
から :help :normal
:
{commands}
は完全なコマンドである必要があります。{commands}
がコマンドを終了しない場合、最後のコマンドは<Esc>
または<C-C>
が入力されたかのように中止されます。:
コマンドも完了する必要があります。
これを修正するには、コマンドの最後に「Enter」文字を追加します。これは、次のコマンドで入力できます。
Ctrl+V、 Enter
Vimでは^M
として表示されます。
:g/^$/norm :put=range(1,14)^M
(コマンドにリテラルの「Enter」を入力する必要がないようにする方法があります。たとえば、:execute
コマンドがよく使用されます。)
しかし、この場合、はるかに簡単な解決策があります。それは、:normal
を完全に削除し、:g
に:put
を直接実行させることです。
:g/^$/put=range(1,14)
:g
コマンドは一致する行ごとにExコマンドを実行し、:put
はExコマンドであるため、ここで仲介者を切り取ることができます。
このコマンドが行うことは、バッファー内の各空白行の後に14の新しい番号付き行を追加することであることに注意してください。それが実際にあなたがそれで意図したものであるかどうかわからない。