Emacs 可以方便地对单文件实现多点编辑,也可以对多个文件同时多点编辑。

单文件编辑

光标放在要编辑的内容上,用 SPC s e (M-x evil-iedit-state/iedit-mode)进入 iedit 编辑模式。

选择模式

按键动作
ESC退出编辑模式
TAB切换选中
n选择下一个
N选择前一个
0跳到当前选中的头部
$跳到当前选中的尾部
gg跳到最先一个
G跳到最后一个
L限定在当前行
F限定在当前函数
J增加选中下一行
K增加选中上一行
V隐藏不相关的行

编辑模式

按键动作
A追加编辑
I插入编辑
S替换编辑
D删除内容
p粘贴内容
U转换为大写
C-U转换为小写

多文件编辑

  • 首先需要安装 grep, rg1, ag2, ack3, pt4 等任意一个搜索工具。

Helm

  • 使用 SPC s s (M-x helm-swoop)查找,还可以进一步:
    • SPC s b (M-x spacemacs/helm-buffers-smart-do-search)在同一 buffer 中查找;
    • SPC s d (M-x spacemacs/helm-dir-smart-do-search)在同一目录下查找;
    • SPC s pSPC / (M-x spacemacs/helm-project-smart-do-search)在同一项目中查找;
    • SPC s f (M-x spacemacs/helm-files-smart-do-search)在指定文件中查找。
  • 将查找结果用 C-c C-e 导出到单独 buffer
    • 在这个新 buffer 中使用 SPC s e​,将这个 buffer 当作单文件,按照上面的方法继续编辑。当然还可以用其他各种方式编辑;
    • 在编辑完成后用 C-c C-c 保存,或 C-c C-k 取消编辑。

ivy

  • 使用 C-s 或者 SPC s s 或者 M-x counsel-{grep|rg|ag|ack|pt} 同样可以查找出多个匹配;
  • 将查找结果用 C-c C-o 导出到单独 buffer,再用 C-x C-q 进入编辑模式;
    • 在这个新 buffer 中使用 SPC s e​,将这个 buffer 当作单文件,按照上面的方法继续编辑。当然还可以用其他各种方式编辑;
    • 在编辑完成后用 C-c C-c 保存,或 C-c C-k 取消编辑。