Emacsのace-jump-modeを導入することによって、カーソルを目的の場所に素早く移動できるということで、導入していきたいと思います。Emacsのace-jump-modeの記事を調べても、導入から使い方までを詳しく書いているサイトがほんとに少ない、というかないので、このブログで丁寧に書いておこうと思います。
環境
筆者の環境はwindows10上に構築した仮想環境centosにEmacsを導入しています。EmacsとCentOSのバージョンは以下のとおりです。
$ cat /etc/redhat-release CentOS release 6.10 (Final) $ emacs --version GNU Emacs 25.3.1
前提知識
まずはこれを読まれている方がホームディレクトリという概念を理解されているか問う必要があります。最初にやらなければならないことにホームディレクトリに.emacsというファイルを作成する必要があります。ホームディレクトリはログインしたときにプロンプトを立ち上げたときにはじめにいるディレクトリの場所のことです。
ace-jump-modeパッケージの導入
初期化ファイルの作成
.emacsファイルは初期状態だと存在しないはずですが、まずは存在するか確認しておいてもよいでしょう。以下のコマンドをうってまずは.emacsファイルが存在するか確認します。ファイルが存在すればpathが表示されるはずです。
$ sudo find / -name .emacs /home/vagrant/.emacs
なければエディタで作成します。エディタはemacsやvimでもいいでしょう。.emacsファイルはホームディレクトリに作成します。
emacs .emacs #emacsで.emacsファイルを作成する
.emacsファイルが立ち上がったらpackageをインストールするための構文を記述する必要なので、以下の構文を記述してください。この構文がないとace-jump-modeが見つけられなくなります。
#以下の構文を.emacsファイルに追加する (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) #これも追加、キーバインドなどの設定 ;; ヒント文字に使う文字を指定する (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)
ここまでできたら保存したあとemacsを一旦閉じて再起動します。
ace-jump-modeのインストール
さきほどace-jump-modeを見つけるための構文を追加したので、インストールの準備がととのいました。まずはemacsが立ち上けてインストールするためのコマンドを入力していきます。(Mはエムではなくメタキーです)入力するとインストールがはじまるはずです。
M-x → package-install → enter → ace-jump-mode → enter
とくに確認する必要はありませんがどのようなパッケージがあるか見ることもできます。emacsの画面で以下のコマンドを入力するとemacsのパッケージリストをみることができます
M-x → package-list-packages
インストールされたかどうか確認する
インストールされたパッケージは ~/.emacs.d/elpa に作成されるようになっているので以下のコマンドをうつことによってインストールされたかどうか確認できます。
]$ ls ~/.emacs.d/elpa ace-jump-mode-20140616.815 #インストールされているのが確認できる
ここまでできたら初期化ファイルにace-jump-modeを使用するための設定とace-jump-modeのインスト―ルが終わっているので実際に使用することができます。
ace-jump-modeを使ってみる
ace-jump-modeには3つのモードがありますが、それぞれに特徴がありますのでみていきましょう。
ace-jump-char-mode
このモードの特徴は文字を指定することによって候補のキーが出現します。文字は一文字で指定します。文字指定を行うのはこのモードのみです。以下の画像では ace-jump-char-modeに入った状態で “h” を押した状態です。候補が表示されるのでそのキーをおすとカーソルを飛ばすことができます。
ace-jump-word-mode
ace-jump-word-modeは開始のキーをおすだけで候補があらわれます。候補が多い場合は2度候補があらわれます。便利なのですが目を使うので疲れる可能性があります。個人的にはあまり使用しなくてもよいモードかと思います
ace-jump-line-mode
最後のace-jump-line-modeは行単位で候補が現れます。候補のキーをおすとその行にカーソルが飛びます。
3つのモードにはどれも一長一短あるかんじです。個人的には文字を指定するace-jump-char-modeがよかったですが、このモードしかつかえないという決まりはないので、どのモードも使用することもできます。
補足事項
筆者の環境ではなぜかshiftを認識しないので上記キーバインドとはべつものにしていますが、別のキーバインドでは動作することを確認しています。
追記
ターミナル上でEmacsを使っている人は、一部のキーバインドが使えないようになっているので、適宜修正してください。
iTerm2上のemacsで C-; C-: C-> C-< C-. C-, 記号キーバインドが入力できないのを解決する – joppot
まとめ
実をいうとEmacsの標準機能でisearchという機能があり、ace-jump-modeと似たようなことができますC-s → C-rとするとisearchを使うことができます。isearchは検索文字を指定することによってその検索文字にカーソルを移動させることができます。
ace-jump-modeの導入が面倒そうだと感じたかたはisearchがあるのでそちらをつかってみてください。パッケージは便利ですがうまくつかいこなせないと逆にスピードがおそくなったりするので練習が必要ですね。
コメント