Vim:外部命令的管道寄存器

Vim:外部命令的管道寄存器,vim,Vim,如何将寄存器的内容通过管道传输到外部命令的标准输入?我凭直觉尝试了以下方法,但不起作用(不过,可以用来说明我的需要): 若寄存器的内容碰巧不包含空值,那个么它就像 call system('some_command', getreg('r', 1, 1) + (getregtype('r') isnot# 'v' ? [''] : [])) 。此表单还将保留可能存在于寄存器中的NUL,如果您知道您没有,您可以使用@r代替getreg()调用。请注意,getreg('r',1,1)即使以逐行模式

如何将寄存器的内容通过管道传输到外部命令的标准输入?我凭直觉尝试了以下方法,但不起作用(不过,可以用来说明我的需要):


若寄存器的内容碰巧不包含空值,那个么它就像

call system('some_command', getreg('r', 1, 1) + (getregtype('r') isnot# 'v' ? [''] : []))

。此表单还将保留可能存在于寄存器中的NUL,如果您知道您没有,您可以使用
@r
代替
getreg()
调用。请注意,
getreg('r',1,1)
即使以逐行模式复制文本,也不会有尾随换行符,这就是为什么我编写了
+(getregtype('r')不是#“v'?[”]:[])
来添加它(表单
@r
没有这个问题)。

正是我想要的!不知道
system()
接受了第二个参数。@ZyX是否可以避免
调用system()
例如
:。!awk{print$0}
会将当前行通过管道传输到
awk
,然后将其打印回来。是否可以执行类似于<代码>:''的操作!awk{print$0}?i、 e.通过管道将
的内容传输到
awk
@AlexanderCska为什么要避免
调用系统()
?现在,您可以通过使用
调用系统('some_command',getreg('r',1,1))
@ZyX来避免NULs的问题。我觉得它更简单。
call system('some_command', getreg('r', 1, 1) + (getregtype('r') isnot# 'v' ? [''] : []))