Emacsバッファ内高速ナビゲーションSwoop.elを作りました。
MELPAからswoop.elをインストールできます。
Githubはこちら: ShingoFukuyama/emacs-swoop
- ・バッファまたは複数バッファをまたいで検索可能
- ・リストを上下移動するたびに対応するバッファの行を同時に表示
- ・選択中の行とマッチした文字はハイライト表示
- ・結果が更新された後も、その前に選択していた行に一番近い行を選択し続ける
- ・pcre2el.elによってperlと同じような正規表現を使用可能
- ・cmigemoによってローマ字検索可能
- ・編集モードでは同時進行で変更が反映される
- ・検索中のみ全体の文字の大きさを変更できる
- ・async.elを利用した非同期分散処理とキャシュで高速化
- ・isearchやevil-searchからswoopに移行可能
- ・swoopからswoop-multi(複数バッファ対象)に移行可能
設定例
(require 'swoop)
(global-set-key (kbd "C-o") 'swoop)
(global-set-key (kbd "C-M-o") 'swoop-multi)
(global-set-key (kbd "M-o") 'swoop-pcre-regexp)
(global-set-key (kbd "C-S-o") 'swoop-back-to-last-position)
(global-set-key (kbd "H-6") 'swoop-migemo) ;; Option for Japanese match
;; 検索の移行
;; isearch > press [C-o] > swoop
;; evil-search > press [C-o] > swoop
;; swoop > press [C-o] > swoop-multi
(define-key isearch-mode-map (kbd "C-o") 'swoop-from-isearch)
(define-key evil-motion-state-map (kbd "C-o") 'swoop-from-evil-search)
(define-key swoop-map (kbd "C-o") 'swoop-multi-from-swoop)
使い方
カーソルが文字の上にあるときにswoopを実行することで、その文字をあらかじめ検索文字として利用できます。また、範囲選択も検索文字として利用できます。
C-u をswoop実行の前に押すと、最後に使用した検索ワードを再利用できます(例: [C-u C-o], [C-u M-o])。
swoop, swoop-multiなどの実行中に[C-c C-e]を押すことで編集モードに移行します。編集は即座に反映されます。
Migemo
migemoを使う場合はcmigemoをインストールし、migemoの辞書ファイルの位置を指定してください。
Macのhomebrewがある場合は "brew install cmigemo" で出来ると思います。
(defvar swoop-migemo-options
"-q -e -d /usr/local/share/migemo/utf-8/migemo-dict")