如何在vim中将搜索到的行替换为拖动的行

  • 本文关键字:替换 拖动 搜索 vim vim
  • 更新时间 :
  • 英文 :


如果我有一个文件:

aaa / new replacement line
AAA / old target line
random line
random line 
BBB / old target line
CCC / old target line

在这个例子中有4个替换,所以最后的文件应该是这样的:

aaa / new replacement line
aaa / new replacement line
random line
random line 
aaa / new replacement line
aaa / new replacement line

我试图在下面找到答案,但也希望看到你对此的意见。也许还有一种我不知道的更成功的"活力高尔夫"方法。也许我只是真的很笨,有一个简单的命令。

基本上,问题是:如果我有一行被拉入寄存器,我如何完全替换匹配"旧目标行"的搜索行?

使用0y$拉取替换行-这不包括换行符。

然后使用:

%s/.*old target line.*/=@"

unnamed寄存器的内容替换目标行,该寄存器将包含最后一次扬克。

我首先使用"aY获取"aaa/新替换行",将保存到寄存器中

然后,我使用以下命令删除回车,从vim?中的寄存器中删除换行符:

:let @a=substitute(strtrans(@a),'^@',' ','g')

或者,我可以简单地使用v的视觉选择,并在没有返回的情况下抓取行(这要容易得多)。

然后我可以使用全局命令来执行替换:

:g/old target line/s/.*/=@a

最新更新