在Vim中将缓冲区管道缓冲到外部命令

时间:2011-10-23 16:13:27

标签: vim pipe external

我是一个Vim新手。我想将当前缓冲区的内容发送到外部命令的stdin(比方说邮件)。我的最终目的是设置一个快捷方式,以便从当前的Vim缓冲区快速发送电子邮件。我猜这应该是一个微不足道的东西,但我找不到一种方法将Vim缓冲区发送到外部命令。提前谢谢。

2 个答案:

答案 0 :(得分:113)

您可以使用:w !cmd将当前缓冲区写入外部命令的stdin。来自:help :w_c

  

:[范围] w [rite] [++ opt]!{cmd}

     

{cmd}行作为标准输入执行[range](请注意'!'前面的空格)。与{cmd}一样执行":!{cmd}",任何'!'都会被上一个命令|:!|替换。

相关命令是:%!cmd,它执行相同的操作,然后用命令的输出替换当前缓冲区。因此:%!sort将调用外部排序命令来对当前缓冲区进行排序。

答案 1 :(得分:1)

以下是如何从命令行将当前缓冲区发送到外部stdin的示例:

vim -es +"w >> /dev/stdout" -cq! /etc/hosts

它对脚本编写很有用。

有关更多命令行技巧,请检查: