在 vim 中通过外部脚本修改文本块
Modify textblock by external script in vim
在编辑文件时我经常遇到以下任务:我有一个独立的脚本,它接受输入并输出它的修改版本(可能是 sort
,可能是 sed 脚本,可能更复杂python 脚本)并且我想 运行 它在 vim.
中的一段文本中
回答解释了如何将文本块提供给外部脚本,我假设可以类似地使用 :r
将脚本的输出读入文件。但是我怎样才能做到这两点:将文本从 vim 馈送到外部脚本并将其输出返回到 vim?
您可以使用普通模式命令过滤 vim 中的一段文本
!{motion}
。例如,对下面的文本使用外部排序工具
(忽略 vim 现在有自己的排序这一事实):
b
a
d
c
使用!ip
(外部命令!
,i
nside p
段落),它将带你到
带有预填充命令行提示符的命令行(我的看起来像
:.,.+4!
) 您只需在其中键入任何外部工具(例如 :.,.+4!sort
)
你想将文本发送到 stdin。由此产生的烈性黑啤酒将取代
所选行:
a
b
c
d
在编辑文件时我经常遇到以下任务:我有一个独立的脚本,它接受输入并输出它的修改版本(可能是 sort
,可能是 sed 脚本,可能更复杂python 脚本)并且我想 运行 它在 vim.
:r
将脚本的输出读入文件。但是我怎样才能做到这两点:将文本从 vim 馈送到外部脚本并将其输出返回到 vim?
您可以使用普通模式命令过滤 vim 中的一段文本
!{motion}
。例如,对下面的文本使用外部排序工具
(忽略 vim 现在有自己的排序这一事实):
b
a
d
c
使用!ip
(外部命令!
,i
nside p
段落),它将带你到
带有预填充命令行提示符的命令行(我的看起来像
:.,.+4!
) 您只需在其中键入任何外部工具(例如 :.,.+4!sort
)
你想将文本发送到 stdin。由此产生的烈性黑啤酒将取代
所选行:
a
b
c
d