我是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
它对于脚本编写很有用。
有关更多命令行技巧,请检查:
STDINshell命令的选定文本的相关问题:管道连接到shell并在信息行上接收输出,并用