更换Vim中的替换件

时间:2011-11-13 13:13:13

标签: vim replace

如何替换替换内部?

我知道你可以将光标下的当前单词放到替换中,但是我想在将它作为输出之前执行替换。

例如:

  • 拥有一份已通过clbuttic filter的文件并替换您所知道的更糟糕的词语,例如去机构化(提示:美国的Consbreastution)。该文件还有一些正确替换的单词。
  • 在整个文档中将Wooloomooloo中的o更改为0(仅适用于该字词)

一个真实世界的例子(来自我的vim历史)正在使用Latex文档并正在运行

%s/\\begin{table}\[h\]/\\begin{table}\[H\]/c

我正在复制字符串只是为了进行微小的更改。

2 个答案:

答案 0 :(得分:2)

将o替换为0非常简单:

:s/o/0/g

也许你想知道如何将它应用于(视觉)选择?

:s/\%Vo/0/g

修改可能是您想要的(请参阅评论)

:%s/\<\zs[Wolm]\+\>\ze/\=substitute(submatch(0), 'o', '0', 'g')/g

这是做什么的:

  • [Wolm]\+匹配仅包含Wolm
  • 的序列
  • \<[Wolm]\+\>匹配(独立)(因此,Wooloomooloo或mooWWlomo都匹配,但不匹配{{1}等)。
  • amool标记了替换的匹配的开头,\zs结束
  • \ze替换匹配(\=substitute(submatch(0), 'o', '0', 'g')\zs之间),但将\ze替换为0

你可以从这种模式开始

  • o替换为您的实际目标
  • [Wolm]\+之外添加可选上下文,以便您可以减少匹配
  • 在模式的前面添加\zs...\ze以启用不区分大小写的匹配

答案 1 :(得分:0)

在编写:sub命令时尝试键入 Ctrl - f 。这将打开命令行窗口,允许您使用vim的普通模式编辑命令。如果在此模式下按Enter键,将执行当前行。如果按 Ctrl - c ,您将退回到命令行模式,并将当前行作为当前文本。

命令行窗口也是您在意外键入q:时发生的情况。 (我知道在理解它的用途之前我做了很多。它也有你之前命令的历史记录。也可以在/搜索期间尝试相同的操作或输入q/

另见:help cmdline-window