web-dev-qa-db-ja.com

Vim:範囲を指定してコマンドをサイレントに実行する

Vimのドキュメントによると、 :silent コマンドを使用して hit-enter プロンプトを回避できます。

問題は、範囲を入力として受け入れるコマンドをサイレントにしたいことですが、範囲がコマンド自体ではなく:silentに渡されるため、これは機能しません。


現在のファイルまたは選択範囲のURLを開くには、.vimrcで次のマッピングを使用します。

noremap <leader>u :w !urlview<cr>

ここで、 :w !urlview は、現在のファイルまたは選択をurlview標準入力にパイプします。

ここで、hit-enterプロンプトを回避しようとして、次のように追加しました。

noremap <leader>u :silent w !urlview<cr>

それは、選択で呼び出されると、正しく応答します:

E481: No range allowed

この問題を回避する方法についての手がかりはありますか?

3
mrucci

マッピングを変更して、:silentafter:wコマンドの最初の入力を挿入できます。これは、インタラクティブに入力する場合と同じです。

:noremap <leader>u :w<Home>silent <End> !urlview<CR>
8
Ingo Karkat