swiper 20170515.1409(in MELPA)
Isearch with an overview. Oh, man!

概要

3/10に登場したばかりのこのelispは、活発に開発されていてアツいです!

swiper.el は正規表現isearchに一覧を付加するものです。

同じ目的では helm を使ったhelm-swoop.el(大々的レビュー) が鉄板です。

しかし、 helm-swoop.elMigemoに対応 している上、
スペースに絞り込み検索の意味を持たせています。

対して swiper.el は純粋に正規表現isearchに一覧を付けた感じです。

とはいえ M-x occur のように別ウィンドウで一覧するわけではなく、
エコーエリアに謙虚に一覧します。

正規表現の括弧に色を付けることもできるので、
その点においてはhelm-swoop.elよりも M-x re-builder 感覚です。

helmのようにウィンドウを分割しない上、
操作感覚は通常の正規表現isearchと変わりません。

そこで本設定では正規表現isearchの置き換えとしてC-u C-sで
M-x swiper を起動させるようにしました。

ちょっと正規表現検索をしたいならばswiperを
行の絞り込み検索がしたいならばhelm-swoop
というふうに住み分けるといいでしょう。

候補選択は ivy.el(レビュー) のインターフェースです。

どうせ一覧isearchなのだから、置換と連携できたらなと思います。

現状で正規表現置換をするならば、visual-regexp.el(レビュー) がいいです。

今後の発展が楽しみです。

20150318055401.png
Fig1: C-u C-sを押してswiperを起動

20150318055504.png
Fig2: defunと入力して全関数を一覧

20150318055616.png
Fig3: 正規表現を入力

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてswiperを使う方は
以下のコマンドを実行します。

M-x package-install swiper

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name swiper

設定 150318051516.swiper.1.el(以下のコードと同一)

(defun isearch-forward-or-swiper (use-swiper)
  (interactive "P")
  (let (current-prefix-arg)
    (call-interactively (if use-swiper 'swiper 'isearch-forward))))
(global-set-key (kbd "C-s") 'isearch-forward-or-swiper)
;;; バックエンドのivyがスペースを".*"に置換してしまうため、無効にする
;;; これをしないと純粋に正規表現isearchの置き換えにならない
(require 'ivy)
(fset 'ivy--regex 'identity)

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。