如何过滤视觉选择?

Chi*_*nke 5 vim

假设我们有一些很好的文本:

Hello world
Run Code Online (Sandbox Code Playgroud)

我们选择了world视觉模式.然后我们可以使用像这样的闪亮命令过滤视觉选择:

:'<,'>!echo foobar
Run Code Online (Sandbox Code Playgroud)

然而,这将取代整个线foobar而不仅仅是world.为什么会这样,我们怎样才能取代world

Ing*_*kat 7

:!过滤器命令总是工作在整个线(这是一样古老的原始VI,包埋实施例的命令,与开始:),以及'<,'>范围也仅指定.

您可以使用古老的vis插件来实现您的结果; 它提供了一个:B命令,将以下命令限制为可视选择的文本.

:'<,'>B !echo foobar
Run Code Online (Sandbox Code Playgroud)

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