通过ivy与ag实现快速multiediting
Table of Contents
有时候,我需要用到一些全项目共用的变量和函数定义. 当然我需要给它们取个名字.
然而我实在是不善于取名.
所以经常我会想到一个更合适的名字,然后需要在全局范围更换这个名字, 也就是当前项目中所有用到改名字的文件都要被修改一遍.
我曾经听Fabien Dubosson(spacemacs的主要开发者之一)提到过的所谓“multi-editing的核武器" 的编辑方法. 当我从Helm切换到Ivy后,我一直在寻找一种能重现该方法的方式.
还好,自Ivy 0.8 后,通过 Ivy-occur
与 Wgrep
的配合能重现该编辑方法.
1 Nuclear-weapon multi-editing :
我首先调用 counsel-ag
来在当前目录搜索要修改的字符串. 默认情况下, ag(以及counsel-ag)会跳过git忽略的那些文件.
然后,我在搜索结果中按下 C-c C-o
(ivy-occur). 这会打开一个 ivy-occur buffer.
跟着,我切换到这个buffer,然后按下 C-x C-q
(ivy-wgrep-change-to-wgrep-mode) 来编辑该buffer. 现在我可以使用普通的搜索与替换的方法来全局修改变量名称了.
我个人喜欢用Evil-ex 命令 :%s/pattern/replace/g
, 当然你也可以用其他的修改方式(听说用Iedit也不错…).
最后我按下 C-c C-c
(wgrep-finish-edit). 现在所有文件中的旧名称都被替换掉了.
Ivy真好用.