Hagia Sophia

Symbol Overlay (Highlight symbols at cursor point with keymap-enabled overlays in Emacs)

今回は(も?),redditで拾ってきたネタ(How to highlight occurences at cursor point in Emacs).カーソルの位置にあるシンボル(単語と思えば良い)をバッファ内ですべてハイライトしてくれるEmacsのパッケージを訊いているのだが,いくつか答えがあって,一番便利そうだったのが,今回紹介する symbol-overlay である.

Table of Contents

References

Install

例によって,以下のようにinit.orgに書き込んでMELPAからsymbol-overlayをインストールする.

#+begin_src emacs-lisp
(use-package symbol-overlay             ; Highlight symbols
  :ensure t
  :config
  (global-set-key (kbd "M-i") 'symbol-overlay-put)
  (global-set-key (kbd "<f7>") 'symbol-overlay-mode)
  (global-set-key (kbd "<f8>") 'symbol-overlay-remove-all)
  )
#+end_src

How to use

使用法はご本家に書いてあるが,まず,”M-i”を叩けば,カーソルが位置しているシンボル(単語と思えば良い)が色付きでハイライトされる.同時に,同一バッファ内での全ての同じ単語も同様にハイライトされる.カーソルを動かしてもハイライトされた状態はそのままである.続けて,別の単語にカーソルを持って行って,”M-i”とすれば,その単語が別の色でハイライトされる.勿論,バッファ内の同一の単語も全て同じ色でハイライトされる.しかも,最初にハイライトした単語は,カーソルが離れた後もハイライトされた状態を維持している.文章で書くとわかりにくいが,要するに下図のような状態になる.

さらに,各単語間は “n” で先に進み, “p” で逆戻りできる.別の色のハイライトの単語にカーソルを移動させれば,今度はその単語間で同様に移動できる.そのほかご本家サイトによれば,以下のようなキーバインドになっている.

"n" -> symbol-overlay-jump-next
"p" -> symbol-overlay-jump-prev
"w" -> symbol-overlay-save-symbol
"t" -> symbol-overlay-toggle-in-scope
"e" -> symbol-overlay-echo-mark
"d" -> symbol-overlay-jump-to-definition
"s" -> symbol-overlay-isearch-literally
"q" -> symbol-overlay-query-replace
"r" -> symbol-overlay-rename

なかでも特筆すべきは “r” のsymbol-overlay-renameで,ハイライトされた単語を一気に書き換えることができる.例えば下図のように “global-set-key” が赤くハイライトされている時,どれかの”global-set-key”にカーソルを置いて “r” を叩けば,minibufferにRenameが表示され,これを消去して新しい名前を書くと赤くハイライトされている単語は一気に新しい名前に変わる.この機能は場合によっては非常に便利である.

こういうパッケージを教えてくれるので,redditは有難い.

Related

Next
Previous
comments powered by Disqus