我想选择一个文本块(例如.V%)并使用该文本作为shell命令的输入(例如.wc或pbcopy) - 但我不想改变当前的缓冲区 - 我只是想看看命令的输出(如果有的话)然后继续编辑而不做任何更改.
键入V%!wc将转换为:'<,'>!wc并切换wc命令输出的文本块.
如何在不影响当前缓冲区的情况下将一大块文本传递给任意shell命令?
pix*_*rth 84
选择您的文本块,然后键入以下键:w!sh
整个事情应该是这样的:
:'<,'>w !sh
Run Code Online (Sandbox Code Playgroud)
而已.我花了8年时间才学到这一点:)
注意:输入:选择文本后产生:'<,'>表示选择开始和结束的范围.
2016年更新:这只是通用的一个用途:
'<,'>w !cli_command
Run Code Online (Sandbox Code Playgroud)
这基本上允许您将文件的任意部分"发送"到外部命令,并在不改变缓冲区的情况下在临时vi窗口中查看结果.其他有用的例子是:
'<,'>w !wc
'<,'>w !to_file my_file
Run Code Online (Sandbox Code Playgroud)
老实说,我觉得改变当前缓冲区更有用.这种变化很简单:
'<,'>!wc
'<,'>!to_file my_file
Run Code Online (Sandbox Code Playgroud)