【发布时间】:2016-10-03 22:31:45
【问题描述】:
在 Vim 中,我想逐行扫描文本,并将其内容传递给外部 shell 命令。 例如,我有一个名字列表,想对列表中的每个名字打个招呼。 我已经设法做的如下。
鉴于此文本:
John Doe
Jane Doe
Baby Doe
我可以使用此命令仅查找名字并使用反向引用语法(\0 或 \1)在替代命令中重复使用该标记。
:%g/\w\+/ s//--\0--/
这是输出:
--John-- Doe
--Jane-- Doe
--Baby-- Doe
我现在想做的是将我的“替代”命令更改为“执行”shell 命令。
这个命令
:%g/\w\+/ exe "!echo hello " "world"
工作正常,但是如何参数化呢?
到目前为止,我已经尝试过:
:%g/\w\+/ exe "!echo hello " \0
还有这个:
:%g/\w\+/ exe "!echo hello" &
没有成功...
这个问题很有价值,因为您可以从 Vim 中扫描包含目录列表的文本并即时创建它们。
【问题讨论】:
标签: vim arguments parameter-passing execute