Vim:静默执行范围内的命令

mru*_*cci 3 vim vimrc

根据vim文档,:silent可以使用该命令来避免hit-enter提示。

问题是我想让一个接受范围作为输入的命令静音,这不起作用,因为范围被传递给:silent而不是命令本身。


例子

要打开当前文件或选择中的 url,我在我的 中使用以下映射.vimrc

noremap <leader>u :w !urlview<cr>
Run Code Online (Sandbox Code Playgroud)

where:w !urlview将当前文件或选择通过管道传输到urlview标准输入。

现在,为了避免hit-enter提示,我补充说:

noremap <leader>u :silent w !urlview<cr>
Run Code Online (Sandbox Code Playgroud)

当使用选择调用时,正确响应:

E481: No range allowed
Run Code Online (Sandbox Code Playgroud)

有关如何规避此问题的任何线索?

Ing*_*kat 8

您可以修改映射以在初始键入命令:silent 插入:w,就像您在交互式键入时可能会做的那样:

:noremap <leader>u :w<Home>silent <End> !urlview<CR>
Run Code Online (Sandbox Code Playgroud)