使用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:搜索文件

  1. 按 C-c r e 调用 consult-grep。
  2. 输入要搜索的字符(例如 abc),并按回车键。

步骤2:导出搜索结果

  1. 在 consult-grep 的搜索结果中,按 C-c C-e 调用 embark-export。这会将搜索结果导出到一个 grep-mode 缓冲区。

步骤3: 切换到可编辑模式

  1. 在 grep-mode 缓冲区中按 C-c C-q 调用 wgrep-change-to-wgrep-mode,这会将缓冲区切换到 wgrep-mode,允许你编辑匹配的内容。
  2. 批量替换字符
    1. 按 M-% 调用 query-replace。
    2. 输入要被替换的内容(例如 abc),并按回车键。
    3. 输入要替换为的内容(例如 def),并按回车键。
    4. 依次按下 y 或 n 对每个替换选项进行确认,或按下 ! 对全部结果进行替换。
  3. 替换结束后,按 C-c C-c 调用 wgrep-finish-edit,这会将修改保存到原始文件中。

Date: 2025-01-23 Thu 12:40