我是Vim的新手。我想将当前缓冲区的内容发送到外部命令的stdin(比如说mail)。我的最终目的是设置快捷方式,以从当前Vim缓冲区快速发送电子邮件。我猜这应该是一件小事,但是我找不到将Vim缓冲区发送到外部命令的方法。提前致谢。
Answers:
您可以:w !cmd
用来将当前缓冲区写入外部命令的标准输入。来自:help :w_c
:
:[range] w [rite] [++ opt]!{cmd}
{cmd}
用[range]
行作为标准输入执行(注意前面的空格'!'
)。{cmd}
与一样执行":!{cmd}"
,any'!'
被之前的命令替换|:!|
。
一个相关的命令:%!cmd
执行相同的操作,然后用命令的输出替换当前缓冲区。因此,:%!sort
将调用外部sort命令对当前缓冲区进行排序。
:'<,'>!python -mjson.tool
或:%!python -mjson.tool
:%!gofmt
不带last的格式%
,因为这将导致它使用保存的版本(可能与当前缓冲区有所不同)
u
用于撤消
这是如何从命令行将当前缓冲区发送到外部stdin的示例:
vim -es +"w >> /dev/stdout" -cq! /etc/hosts
它对于脚本编写很有用。
有关更多命令行技巧,请检查:
STDIN
shell命令的选定文本的相关问题:管道连接到shell并在信息行上接收输出,并用