Vim:管道注册到外部命令

时间:2012-05-28 06:49:17

标签: vim

如何将寄存器的内容传递给外部命令的标准输入?我直观地尝试了以下内容,但它没有用(可能有助于说明我的需要):

:"0w !some_command

1 个答案:

答案 0 :(得分:11)

如果寄存器的内容没有包含NULL,则它就像

一样简单
call system('some_command', @r)

。如果它恰好发生,因为使用寄存器作为变量会将它们全部转换为换行符(我不知道它们如何在内部表示,除了寄存器不像具有寄存器类型和C的结构那么简单的事实以NULL结尾的字符串)你不能使用这种方式,而是必须粘贴到临时缓冲区并使用:%w !。如果您希望能够完整地将寄存器发送到some_command 完整,当寄存器恰好同时具有NULL(s)和其他内容,然后将换行符作为其最后一个字符时,它会变得更加棘手