search - vim 搜索和替换仅限于视觉 block 模式下的突出显示

标签 search vim replace

我经常在列中有文本,需要替换一些内容而不破坏同一行上的类似内容......一个简单的例子如下:

vim visual block-mode screenshot

假设我已经使用 vim 可视块模式以灰色突出显示文本,并且想要替换 8081 ;但是,我只希望在突出显示的视觉块中进行替换。

我已经试过cntlv : s/80/81/g ;但是,这会替换视觉块内部和外部的文本。 (基于 Randy 的反馈,这是因为 : s 是一个逐行命令)。

我知道我可以在这个特定实例中使用逐行视觉块替换( Shiftv : s/80\.1/81.1/g );但是,我正在尝试为在非逐行视觉块中无法轻松替换的问题找到通用解决方案(这不是视觉块模式应该帮助解决的那种问题吗?)。需要确认的答案,如 : s/80/81/gc ,不是我要找的。

为了清楚起见,我将重申这个问题:如何替换 8081通过使用 vim 的视觉块模式突出显示?

最佳答案

您需要添加 \%V到你的模式。来自 :help \%V :

Match inside the Visual area.  When Visual mode has already been
stopped match in the area that gv would reselect.
This is a /zero-width match.  To make sure the whole pattern is
inside the Visual area put it at the start and end of the pattern.

OP 编辑​​:明确的解决方案是使用 : s/\%V8\%V0/81/g

关于search - vim 搜索和替换仅限于视觉 block 模式下的突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6230494/

相关文章:

Vim 绑定(bind)将光标下的单词括在双花括号中

ios - 在 iOS 应用程序中搜索

caching - 如何在Redis缓存列表中按元素值查找?

xml - 如何在 flex/actionscript 中通过属性名称/值查找特定的 xml 数据

macos - Vim grep 导致字符暂时消失

c++ - 让 vim 的 YouCompleteMe 插件识别 exuberant-ctags

objective-c - 在 iphone 应用程序中解析和替换 @usernames 和 URL

regex - 替换两个字符串之间所有出现的字符

javascript - 替换字符串中一个字符的所有实例的最快方法

java - 在 Eclipse 中搜索代码行