Emacsバッファ内高速ナビゲーションSwoop.elを作りました。

emacs-swoop

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")

何か質問や問題点などありましたら、お気軽にTwitterGithubでお知らせください。