在Vim中将缓冲区配pipe到外部命令
我是一个Vim新手。 我想发送当前缓冲区的内容到外部命令的标准input(可以说邮件)。 我的最终目的是设置一个快捷方式来从当前的Vim缓冲区快速发送电子邮件。 我猜这应该是一个微不足道的东西,但我找不到一种方法发送Vim缓冲区到外部命令。 提前致谢。
您可以使用:w !cmd
将当前缓冲区写入外部命令的stdin。 来自:help :w_c
:
:[range] w [rite] [++ opt]!{cmd}
以
[range]
行作为标准input执行{cmd}
(注意'!'
前面的空格)。{cmd}
与":!{cmd}"
一样执行,任何'!'
被前面的命令|:!|
replace 。
一个相关的命令是:%!cmd
,它执行相同的操作,然后用命令的输出replace当前的缓冲区。 所以:%!sort
会调用外部sorting命令来sorting当前的缓冲区。
以下是如何从命令行将当前缓冲区发送到外部stdin的示例:
vim -es +"w >> /dev/stdout" -cq! /etc/hosts
这对于脚本编制非常有用。
对于更多的命令行技巧,请检查:
- 如何将整个缓冲区写入命令行的标准输出?