- smex 20151212.1409(in MELPA)
- M-x interface with Ido-style fuzzy matching.
概要
smex.el は、 M-x を ido の flex-match
(あいまいマッチ) に対応させます。
idoのあいまいマッチとは、文字と文字の間に
その文字以外の任意の文字が入ることを許可するという意味です。
言葉で説明するとわかりにくいので、
ido.elの該当コードを抜き出してみると…
(let ((ido-text "bar")) (concat (regexp-quote (string (aref ido-text 0))) (mapconcat (lambda (c) (concat "[^" (string c) "]*" (regexp-quote (string c)))) (substring ido-text 1) ""))) ;;; => "b[^a]*a[^r]*r"
bar と入力すると正規表現 b[^a]*a[^r]*r で検索するということです。
なので、rudeと入力すると「ruby-mode」にマッチするのです。
これは現時点での helm つまり M-x helm-M-x にはない機能です。
また、ウィンドウ構成を崩さないので
目線が移動しないというメリットもあります。
M-x をカイゼンしたい、けれどhelmはいまいち好きになれない…
という方はぜひともおすすめです。
また、メジャーモードに対応するコマンドのみを列挙する
M-x smex-major-mode-commands も用意しています。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))
初めてsmexを使う方は
以下のコマンドを実行します。
M-x package-install smex
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name smex
設定 141216055219.smex.el(以下のコードと同一)
(smex-initialize) (global-set-key (kbd "M-x") 'smex) (global-set-key (kbd "M-X") 'smex-major-mode-commands) ;; This is your old M-x. (global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
実行方法
$ wget http://rubikitch.com/f/141216055219.smex.el $ emacs -Q -f package-initialize -l 141216055219.smex.el
Fig1: M-xがido化!あいまい検索対応
Fig2: M-Xはメジャーモードに関するコマンドのみ
本サイト内の関連パッケージ
- helm - Helm is an Emacs incremental and narrowing framework
- ido-vertical-mode - Makes ido-mode display vertically.
- helm-smex - Helm interface for smex
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。