gVim中的复杂替换

  • 本文关键字:替换 复杂 gVim vim
  • 更新时间 :
  • 英文 :


最近在Minecraft方面,我一直是一个糟糕的人。我已经过度修改了它,以至于我需要完全重写它们的 ID。唯一的问题是...重写一次大约需要几个小时,更不用说它们中的任何一个是否与原始游戏发生冲突。所以,为了节省时间,我想我会使用 Vim,但在阅读了这里的几篇有用的文章后,我仍然对替换功能/命令知之甚少。这是我正在尝试做的:替换此

I:exampleModnamePath.id=16389
I:exampleModnamePat2.id=19657

等。

有了这个

I:exampleModnamePath.id=20000
I:exampleModnamePath.id=20001

等。

这种情况持续了一段时间,对于那些回答的人,你能告诉我它是如何工作的吗,这样我就不必一直问这些问题了?

供您阅读:

:let g:num = 1
:g/.id=d+$/exec 's!.id=d+$!.id='.g:num.'! | let g:num=g:num+1'

这是我在电子书中(重新)编号章节的代码的略微简化版本。

简而言之:使用:g在受影响的行上运行某些内容;使用:exec生成/运行新的替换命令并增加计数器。试了一次,惊讶地发现这个技巧奏效了。灵感来自我之前玩:g//s///组合。

我不确定您使用什么规则来选择用于替换的数字,但如果你需要的话只是一个新数字,不会与以前的数字冲突,您可以尝试替换第一个数字在未使用的范围内使用某些东西。类似于将 16389 替换为 76389

为此,您可以使用此:s/Path.id=.(.*)/Path.id=71

这将搜索字符串 Path.id=,后跟一个字符,然后是一组更多字符。我将用字符串 Path.id=7 和之前选择的组替换它。

您可以通过在 Path.id 之前添加字母以仅匹配某些类型的路径来使其更具选择性。

最新更新