使用embark编辑多个文件中的相同字符
Table of Contents
使用 consult 、embark 和 wgrep 的组合来实现跨文件批量编辑和替换字符的功能。这种方法非常适合在多个文件中搜索并批量替换特定内容(如将所有文件中的 abc 替换为其他内容)。
配置
(use-package consult :ensure t :bind (("C-c r e" . consult-grep))) ;; 绑定快捷键,方便调用 consult-grep (use-package embark :ensure t :bind (:map minibuffer-mode-map ("C-c C-c" . embark-collect) ;; 在 minibuffer 中导出到收集缓冲区 ("C-c C-e" . embark-export))) ;; 绑定快捷键,方便导出搜索结果 (use-package wgrep :ensure t :bind (:map grep-mode-map ("C-c C-q" . wgrep-change-to-wgrep-mode))) ;; 绑定快捷键,方便切换到 wgrep 模式
搜索并导出结果
步骤1:搜索文件
- 按 C-c r e 调用 consult-grep。
- 输入要搜索的字符(例如 abc),并按回车键。
步骤2:导出搜索结果
- 在 consult-grep 的搜索结果中,按 C-c C-e 调用 embark-export。这会将搜索结果导出到一个 grep-mode 缓冲区。
步骤3: 切换到可编辑模式
- 在 grep-mode 缓冲区中按 C-c C-q 调用 wgrep-change-to-wgrep-mode,这会将缓冲区切换到 wgrep-mode,允许你编辑匹配的内容。
- 批量替换字符
- 按 M-% 调用 query-replace。
- 输入要被替换的内容(例如 abc),并按回车键。
- 输入要替换为的内容(例如 def),并按回车键。
- 依次按下 y 或 n 对每个替换选项进行确认,或按下 ! 对全部结果进行替换。
- 替换结束后,按 C-c C-c 调用 wgrep-finish-edit,这会将修改保存到原始文件中。