EMACS-DOCUMENT

=============>集思广益

通过ivy与ag实现快速multiediting

有时候,我需要用到一些全项目共用的变量和函数定义. 当然我需要给它们取个名字.

然而我实在是不善于取名.

所以经常我会想到一个更合适的名字,然后需要在全局范围更换这个名字, 也就是当前项目中所有用到改名字的文件都要被修改一遍.

我曾经听Fabien Dubosson(spacemacs的主要开发者之一)提到过的所谓“multi-editing的核武器" 的编辑方法. 当我从Helm切换到Ivy后,我一直在寻找一种能重现该方法的方式.

还好,自Ivy 0.8 后,通过 Ivy-occurWgrep 的配合能重现该编辑方法.

1 Nuclear-weapon multi-editing :

我首先调用 counsel-ag 来在当前目录搜索要修改的字符串. 默认情况下, ag(以及counsel-ag)会跳过git忽略的那些文件.

first_step.png

然后,我在搜索结果中按下 C-c C-o (ivy-occur). 这会打开一个 ivy-occur buffer.

second_step.png

跟着,我切换到这个buffer,然后按下 C-x C-q (ivy-wgrep-change-to-wgrep-mode) 来编辑该buffer. 现在我可以使用普通的搜索与替换的方法来全局修改变量名称了. 我个人喜欢用Evil-ex 命令 :%s/pattern/replace/g, 当然你也可以用其他的修改方式(听说用Iedit也不错…).

third_step.png

最后我按下 C-c C-c (wgrep-finish-edit). 现在所有文件中的旧名称都被替换掉了.

Ivy真好用.