Emacs之multi-occur替代grep(五十八)

鲁品
2023-12-01

1.occur-mode快捷键

1.第一种方式
# M-g M-n / M-g M-p 遍历查找到中匹配行的原所在文件位置
简化跳转命令
# C-c C-f 开启next-error-follow-minor-mode后,可以用以下命令在buffer和文件中跳转
Or
# M-x next-error-follow-minor-mode
M-n: 跳转到下一个匹配行的位置
M-p: 跳转到上一个匹配行的位置



<: 跳转到 *occur* buffer的开始位置
>: 跳转到 *occur* buffer的结束位置
点击匹配行或在匹配行上按回车: 跳转到原buffer中匹配行的位置
g: 刷新 *occur* buffer中的搜索结果. 常用于原buffer修改之后.
e: 进入occur的编辑状态
C-c C-c: 退出occur的编辑状态,并将修改应用到原buffer中
q: 退出 *occur* buffer


2.配置
# emacs .emacs
(global-set-key (kbd "M-s") 'occur)

1.配置
# emacs .emacs

(eval-when-compile (require 'cl))
(defun get-buffers-matching-mode (mode)
  "Returns a list of buffers where their major-mode is equal to MODE"
  (let ((buffer-mode-matches '()))
    (dolist (buf (buffer-list))
      (with-current-buffer buf
        (if (eq mode major-mode)
            (add-to-list 'buffer-mode-matches buf))))
    buffer-mode-matches)
  )

(defun multi-occur-in-this-mode ()
  "Show all lines matching REGEXP in buffers with this major mode."
  (interactive)
  (multi-occur
   (get-buffers-matching-mode major-mode)
   (car (occur-read-primary-args)))
  )

;; global key for `multi-occur-in-this-mode' - you should change this.
(global-set-key (kbd "C-<f2>") 'multi-occur-in-this-mode)


2.
# M-g M-n / M-g M-p 遍历查找到中匹配行的原所在文件位置
简化跳转命令
# C-c C-f 开启next-error-follow-minor-mode后,可以用以下命令在buffer和文件中跳转
Or
# M-x next-error-follow-minor-mode
M-n: 跳转到下一个匹配行的位置
M-p: 跳转到上一个匹配行的位置

2.occur与multi-occur用法区别

本质区别:multi-occur可以显示多个buffer上下文,而occur不可以.

1.occur
# M-x occur




2.multi-occur
# M-x multi-occur

 类似资料: