vim:搜索&更换

时间:2014-11-07 21:55:23

标签: search vim replace refactoring

我正在寻找一种简单的方法来搜索和替换vim中的东西作为"解决方法"用于重构。

在其他一些stackoverflow问题上,我找到了这段代码:

nnoremap gR gD:%s/<C-R>///gc<left><left><left>

我认为 gD 选择整个文档中光标下的当前单词,%s 然后在我输入替换模式后搜索并替换匹配项。 gc 代表全球确认?!

但是:这不能按预期工作。例如,在我的一些python类中,我可以轻松地在整个文件中重命名 self 的出现,但它不适用于方法标识符或长度为1的字段标识符。

def __init__(self):
    self.test = []
    self.A = []
    ...

因此可以使用此代码段更改 self ,但在字段 A 上执行 gR 根本不起作用。

如何让这项工作轻松搜索并替换一个文件?

任何有关智能重构的提示都将受到赞赏。经过几个小时的搜索,我发现插件和变通方法主要使用C文件,但我还需要至少Java,Python和PHP的兼容性。

感谢您的每一个答案:)

更新:我最近发现,如果初始选择的模式位于行的开头,它就可以正常工作。如果模式位于行的中间位置它不起作用......任何想法?

1 个答案:

答案 0 :(得分:1)

gD是&#34;转到全球声明&#34;,请参阅:help gD

映射:

  • 跳转到缓冲区中光标下第一次出现的单词gD

  • 使用%s/填充命令行,意思是&#34;替换整个缓冲区&#34;,

  • 后跟gD使用的搜索模式,插入<C-r>/

  • 一对空的斜杠//,用于替换,

  • 标志gc意味着&#34;在线上的每场比赛中发挥你的魔力并要求确认&#34;,

  • <left><left><left>将光标放在//之间,为您输入替代品做好准备。

无论光标下的单词有多长,这个映射就完全按照它所声称的那样做了。


Vim不是IDE,不期待任何事情&#34;智能&#34;。