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

时间:2010-10-14 18:55:12

标签: vim

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

编辑文件的简化示例:

name value name   saturation 
red  5     green  2
blue 7     yellow 7 
other text

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

 name value name   saturation
 red  5     green  2.4
 blue 7     yellow 7.14
 other text

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

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

在vim中是否有直接的解决方案,没有 切/壳/糊?

1 个答案:

答案 0 :(得分:3)

您可以尝试Charles Campbell的vis插件

  

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

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

  

使用:NarrowRegion缩小基于行的选择范围,或者在视觉上选择范围并按nr

     

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