web-dev-qa-db-ja.com

nvimnormコマンド

通常モードのneovim0.4.3-3では、このコマンド:

:put=range(1,4)

1から4までの番号付きリストを配置します

しかし、私がこのように空白行にのみ数字を入れたいとき:

:g/^$/norm :put=range(1,14) 

期待どおりに機能していません-空の行を強調表示するだけで、putが機能していません、なぜですか?

1
EdiD

:normalコマンドは完全なコマンドのみを実行し、:putExコマンドの最後に実際に実行するための「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の新しい番号付き行を追加することであることに注意してください。それが実際にあなたがそれで意図したものであるかどうかわからない。

1
filbranden