(不定期更新)个人配置分享

2 符号高亮 symbol-overlay

这是我最喜欢的 emacs 插件之一!具体见 [推销package] symbol-overlay,同时高亮多个symbol

特别是在没有 LSP 支持的情况下,用作文档内的 renaming 非常方便。它和 isearch 的区别有几点:

  • 可以同时高亮多个 symbol
  • 能在多个 symbol 之间快速跳转
  • 它的高亮是 persistent 的
  • 支持临时高亮,即 cursor 放在 symbol 上可以直接高亮它
(use-package symbol-overlay
  :straight (:host github :repo "roife/symbol-overlay" :branch "master")
  :bind (("C-c s i" . symbol-overlay-put)
         ("C-c s n" . symbol-overlay-switch-forward)
         ("C-c s p" . symbol-overlay-switch-backward)
         ("C-c s c" . symbol-overlay-remove-all)
         :map symbol-overlay-map
         ;; `meow`
         ("h" . nil)
         ("q" . nil)
         ("i" . nil)
         ("R" . symbol-overlay-query-replace)
         ("?" . symbol-overlay-map-help)
         ("c" . symbol-overlay-put)
         ("C" . symbol-overlay-remove-all))
  :hook (((prog-mode yaml-mode) . symbol-overlay-mode))
  :config
  (setq symbol-overlay-temp-highlight-on-region t)
  )

这里我将它的快捷键都放在 C-c s 的命名空间下。C-c 是 Emacs 留给用户自定义的命名空间,s 表示 symbol,方便记忆。同时为了能够和 meow / evil 之类的模式编辑插件一起用,这里我把模式编辑下常用的快捷键(h 等)给 unbind 了。

另外我这里使用的 symbol overlay 是一个自己魔改的、支持「选中区域临时高亮」的版本。目前 symbol-overlay 的临时高亮只支持 symbol,我为它添加了类似 VS Code 等编辑器中「高亮选中区域内容」。我觉得这是个很好用的特性,但是 maintainer 觉得它和项目发展理念不符就 close 掉了🤣 所以我自己维护了一个仓库 roife/symbol-overlay,可以用 symbol-overlay-temp-highlight-on-region 开启。

效果预览

6 个赞