avy 20170702.237(in MELPA)
tree-based completion

概要

ace-jump-mode.el(レビュー)は画面内の単語や文字に移動する
高速なインターフェースとして人気があります。

ace-pinyin.el(レビュー)と併用すれば日本語文字にも対応してくれます。

avy.elace-jump-mode.el 同様ヒント文字を入力すると
その場所に移動するパッケージです。

ace-jump-modeは単独では素晴しいパッケージなのですが、
いざ拡張しようとするとやりにくいものがあります。

ace-jump-modeのインターフェースが気に入って他で使いたい
elispプログラマならばace-jump-mode.elに固執するのではなく
avy.elを使ってみましょう。

同じ作者によるace-window.el(レビュー)ace-link.el(レビュー)
名前はaceとついているものの、実際はavyを使っています。

ace-jump-modeをすでに使っている人でも、
avy.elが提供している2つのコマンドを使ってみることをおすすめします。

  • avy-goto-char-timer
  • avy-goto-line

M-x avy-goto-char-timer は、 M-x ace-jump-char-mode の進化形です。

  • 1文字入力して0.5秒後にその文字に対応するヒント文字が出る
  • 0.5秒以内に2文字目も入力すると、2文字が連続する場所にヒント文字が出る

20150520073144.png
Fig1: C-@の後にiを押すとiの前にヒント文字が付く

20150520073153.png
Fig2: C-@の後に素早くisと押せばisの前にヒント文字が付く

M-x avy-goto-line は、 M-x ace-jump-line-mode
標準の M-x goto-line を合体させたものです。

  • 行頭のヒント文字を打てばその行に移動
  • 数字を打ったらその時点でgoto-lineの働きをする

20150520073208.png
Fig3: M-g M-gの後にヒント文字が付く

20150520073216.png
Fig4: 数字を打てば標準のgoto-lineに移行

よってM-g M-gをそのままavy-goto-lineに割り当てても問題ありません。

インストール

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

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

M-x package-install avy

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

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

併用が一番

他にもace-jump-modeに対応するavyなコマンドが定義されていますが、
日本語と併用する場合に表示がずれてしまいます。

文字幅が考慮されていないのが原因です。

これは我々日本人にとってはとても痛いです。

作者がCJKを知らないようなので無理もないですが、
今後のpull-reqが待たれるところです。

よって、ace-jump-modeを置き換えるのではなく、
併用していくのが一番ではないでしょうか。

20150520073243.png
Fig5: ace-jump-word-modeでは日本語でもずれない

20150520073249.png
Fig6: avy-goto-word-0ではずれてしまう><

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


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