Emacs 加 IVY 加 AG 等于 Multi-editing 大招

原文:NUCLEAR WEAPON MULTI-EDITING VIA IVY AND AG

在我编写项目代码的时候,写一些全局变量或者方法简直不能再正常了。一般情况下,我都是随便想一个名字就用。

但是呢,我这个人特别不擅长起名字。

所以,当一个更好的名字蹦出来的时候,我急需一种方法,可以让我在项目所有文件批量修改这些名字。

我记得 Fabien Dubosson (Spacemecs 开发者之一)曾经提出一个在 Spacemacs 中使用的方法,他把这个方法称之为“核武器级别的 Multi-editing”。当我从 Helm 切换到 Ivy 之后,我也想搞一个类似的东西。


经过仔细地研究,我发现 Ivy-occur 从 0.8 版起已经良好地支持了 Wgrep

Multi-editing 大招

这个大招是这么操作的:

首先,我使用 counsel-ag 在当前目录中搜索想要替换的字符串。注意,默认情况下,ag (还有 counsel-ag)会忽略在 gitignore 中设置的文件。

然后呢,在搜索结果中按下 C-c C-o (ivy-occur)来打开 ivy-occur 这个 buffer。

接下来,切换到这个 buffer 随后使用快捷键 C-x C-q (ivy-wgrep-change-to-wgrep-mode)修改它。也就是说,我可以使用普通的搜索替换方法来批量重命名了。我用的命令是

:%s/pattern/replace/g
当然,你也可以用其他的命令。

最后,我按下 C-c C-c (wgrep-finish-edit)。砰!现在所有出现 edit 的地方都修改为 potatoes 了。

Ivy 赛高。

编辑于 2016-10-19