ace-jump-mode 20140616.115(in MELPA)
a quick cursor location minor mode for emacs

概要

<2015-04-18 Sat> ace-jump-char-modeがMigemo化されました!!!

これまで何回か ace-jump 関係の記事を書きましたが、
大元のace-jump-modeの記事はまだでした。

なので ace-jump-mode.el を紹介します。

これは、画面内の任意の場所に3ストローク以下で移動するコマンドです。

元来、任意の場所にカーソルを移動させるには
インクリメンタルサーチ(isearch)が王道でした。

しかし、画面に表示されている範囲に限定すると
isearchはもはや時代遅れの方法なのです…

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

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

M-x package-install ace-jump-mode

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

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

設定 141009120801.ace-jump-mode.el(以下のコードと同一)

;; ヒント文字に使う文字を指定する
(setq ace-jump-mode-move-keys
      (append "asdfghjkl;:]qwertyuiop@zxcvbnm,." nil))
;; ace-jump-word-modeのとき文字を尋ねないようにする
(setq ace-jump-word-mode-use-query-char nil)
(global-set-key (kbd "C-:") 'ace-jump-char-mode)
(global-set-key (kbd "C-;") 'ace-jump-word-mode)
(global-set-key (kbd "C-M-;") 'ace-jump-line-mode)

実行方法

$ wget http://rubikitch.com/f/141009120801.ace-jump-mode.el
$ emacs -Q -f package-initialize -l 141009120801.ace-jump-mode.el

3種類のモード

ace-jump-modeには3種類のモードがあります。

  • M-x ace-jump-char-mode
  • M-x ace-jump-word-mode
  • M-x ace-jump-line-mode

それぞれ文字、単語、行への移動です。

M-x ace-jump-char-modeでは文字を打ち込む必要がありますが、
残りの2つはコマンドを実行した時点でジャンプする準備ができています。

そのため、これらのコマンドを1ストロークのキーに割り当てておけば
任意の単語・行へ2ストロークで到達できる場合もあります。

僕がしばらくace-jump-modeを使ったところ、
eshell / shell / 日本語を含むバッファにおいては ace-jump-word-mode 、
プログラミング言語のソースコードには ace-jump-char-mode
が快適だとわかりました。

任意の場所に3ストロークで移動!

この設定ではC-:にace-jump-char-modeを割り当てていますが、
昨日紹介した ace-isearch.el と組み合わせれば
ace-jump-char-modeをキーに割り当てる必要はなくなります。

C-s 文字 ヒント文字
の3ストロークで
画面内の任意の場所に移動できるようになります。

ヒント文字とは、ace-jumpを実行したときに表示される
赤い文字のことで、その文字をタイプすれば
その場所にカーソルが移動します。

20141009121230.png
Fig1: M-x ace-jump-word-modeでのヒント文字

isearch vs ace-jump-mode

ace-jump-modeは画面内に特化していて、
isearchよりもストローク数は少なく
他のウィンドウにも移動できます。

3ストロークというのは驚異的に少ないです。

isearchを使う場合、
C-s(C-r) 文字 RET
であっさりと3ストローク使っていしまいます。

移動したい文字が複数個表示されている場合がほとんどですが、
そのときは次の文字を打つかC-sやC-rで再検索する必要があります。

この時点で4ストローク以上になってしまいますね。

また、別ウィンドウの場合C-x oであっさり2ストローク消費します。

C-tなど1ストロークに M-x other-window を割り当てたとしても
貴重な1ストロークを消費します。

よって近距離における検索ベースの移動は
ace-jump-modeかその類似品が最強です。

本サイト内の関連パッケージ


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