我正在寻找一种简单的方法来搜索和替换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的兼容性。
感谢您的每一个答案:)
更新:我最近发现,如果初始选择的模式位于行的开头,它就可以正常工作。如果模式位于行的中间位置它不起作用......任何想法?
答案 0 :(得分:1)
gD
是&#34;转到全球声明&#34;,请参阅:help gD
。
映射:
跳转到缓冲区中光标下第一次出现的单词gD
,
使用%s/
填充命令行,意思是&#34;替换整个缓冲区&#34;,
后跟gD
使用的搜索模式,插入<C-r>/
,
一对空的斜杠//
,用于替换,
标志gc
意味着&#34;在线上的每场比赛中发挥你的魔力并要求确认&#34;,
并<left><left><left>
将光标放在//
之间,为您输入替代品做好准备。
无论光标下的单词有多长,这个映射就完全按照它所声称的那样做了。
Vim不是IDE,不期待任何事情&#34;智能&#34;。