首页 > 解决方案 > 通过 vim 中的外部脚本修改文本块

问题描述

在编辑文件时,我经常遇到以下任务:我有一个独立的脚本,它接受输入并输出它的修改版本(可能是sort,可能是 sed 脚本,可能是更复杂的 python 脚本),我想运行它vim 中的一段文本。

这个答案解释了如何将文本块提供给外部脚本,我假设人们可以类似地使用:r. 但是我怎样才能做到这两点:将文本从 vim 提供给外部脚本并将其输出返回到 vim?

标签: bashvim

解决方案


您可以使用普通模式命令过滤 vim 中的文本块 !{motion}。例如,在下面的文本中使用外部排序工具(忽略 vim 现在有它自己的排序的事实):

b
a
d
c

使用!ip(外部命令!inside paragraph),它将带您到带有预填充命令行提示符的命令行(我的看起来像 ),您只需在其中键入您想要将文本作为标准输入发送到的:.,.+4!任何外部工具(例如)。:.,.+4!sort生成的粗壮将替换选定的行:

a
b
c
d

推荐阅读