2013-04-24 29 views
5

假设我们有一些不错的一大堆文字:如何过滤视觉选择?

Hello world 

,我们在视觉模式选择world。然后,我们可以用一个闪亮的命令,这样一个过滤器可视选择:

:'<,'>!echo foobar 

然而,这与foobar而不只是world更换整条生产线。为什么会这样,我们怎么才能取代world

+0

范围是线性的 – Kent 2013-04-24 16:15:23

+2

请参阅':help visual_example' – 2013-04-24 16:18:44

+0

@evilotto好戏,以前没有找到它.. – Kent 2013-04-24 16:26:30

回答

6

:!滤波器命令总是工作于整个线(这是一样古老原始VI,嵌入Ex命令:开始),并且'<,'>范围也仅指定线

您可以使用可敬的vis plugin来实现您的结果;它提供了一个:B命令,将以下命令限制为可视化选择的文本。

:'<,'>B !echo foobar 

该插件适用于所有类型的Ex命令;对于:substitute,在选择范围内你也可以使用特殊的\%V原子。

+0

感谢您的回复!我想在插件中使用它。这是否意味着每个用户都应该安装vis插件,还是有更好的方法来做到这一点? – 2013-04-24 16:15:29

+0

除非您可以减少使用Vimscript中的简单子集,否则我会建议将其委托给vis插件。为什么重新发明轮子?! – 2013-04-24 16:18:12