从vim到外部程序的文本管道矩形区域?

mos*_*osh 7 vim

我在vim中编辑一个大文本数组,我想在它的一个子列上进行计算.

编辑文件的简化示例:

name value name   saturation 
red  5     green  2
blue 7     yellow 7 
other text
Run Code Online (Sandbox Code Playgroud)

我想通过外部程序calc.pl来管道第4列,calc.pl用输入中的新数字替换数字,例如:

 name value name   saturation
 red  5     green  2.4
 blue 7     yellow 7.14
 other text
Run Code Online (Sandbox Code Playgroud)

当我在第4列中选择矩形时,使用v.motion和!perl calc.pl,整条线将通过管道输送到calc.pl,而不仅仅是矩形.

解决方法是:将矩形切割为临时文件,在临时文件上运行calc.pl,然后将输出作为矩形读取.

在vim中是否有直接的解决方案,无需切割/外壳/粘贴?

Pet*_*ker 3

您可以尝试Charles Campbell 的vis插件

使用 ctrl-v 选择一列,然后对该列应用外部过滤器。ctrl-v ..move.. :B !sort

另一个可能适合您的插件是Christian Brabandt 的NrrwRgn 。

使用 :NarrowRegion 缩小基于行的选择范围,或者直观地选择范围并按 nr

在临时缓冲区中,只需将其保存,所做的更改就会被复制到原始文件中。这只是一个非常简单的帮助。您可能应该阅读该插件提供的帮助。请参阅:h NarrowRegion