Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

あると便利なEmacsのおすすめパッケージ 2選

こんにちは、taniyuです。前回に引き続きEmacsのお話になります。
今回は、タイトルの通り、自身がこれまで使ってきたパッケージの中でこれは外せないというものを2つ紹介します。 かなり有名どころを選んでいるので、拡張を幾つか導入している人にとっては参考にならないかもしれません。

紹介するパッケージ

  • helm
  • key-chord

helm

helmは、前回の記事で軽く触れましたが、「ファイル検索やバッファの切り替え等の処理を統一されたインタフェースで行える」というものです。また、ユーザの入力によって、incrementalに候補が絞られていくインタフェースを提供してくれます。
言葉では分かりにくいので、実際に例を示します。以下は、helmを導入する前と後で、replace-stringを比較したものになります。

helm導入前

M-xから、replaceと入力しタブを押して候補の一覧を出す。その後、stringと入力する。 f:id:tytaniyu:20160701012941g:plain

helm導入後

M-xから、replaceと入力していくと、該当する単語が含まれるコマンドが自動で表示される。
一番上に、replace-stringがあるので、Enterを押し、コマンドを実行する。 f:id:tytaniyu:20160701013002g:plain

どうでしょうか。導入後のほうが、コマンドを実行するまでが短く、バッファ内に候補が表示されているため、非常に分かりやすいですね。 コマンドの実行の他、ファイルを開くときや、バッファを切り替える際のインタフェースも上記のようになります。

導入方法

package.elから導入することができます。もし、package.elを使ったことが無いのであれば、
~/.emacs.d/init.el を開き、以下を入力して下さい。

(package-initialize)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)

そして、emacs起動し、M-xを入力して、以下のコマンドを順に叩いて下さい。

package-refresh-contents
package-install helm

そうすると、helmが導入されます。

設定例

続いて設定例になります。以下のような内容を、~/.emacs.d/init.el を入力することで、helmを
M-x入力時やファイルを開く際に適用することができます。

(require 'helm-config)
(helm-mode 1)
(define-key global-map (kbd "M-x") 'helm-M-x)
(define-key global-map (kbd "C-x C-f") 'helm-find-files)

key-chord

key-chordは、複数のキーを指定時間内に押すことで、コマンドを実行できるというものです。
例えば、glgoto-lineに結びつけることで、glを同時に押した際に、goto-lineを呼び出すことができるようになります。
key-chordを活用することで、ControlキーやMetaキーを押すことによる、小指への負担を減らすことができます。
また、好きなキーに指定できるので、コマンドを打つまでの時間を短縮することもできます。

導入方法

package.elから導入することができます。

設定例

以下は実際に自分が設定している項目になります。

(require 'key-chord)
(key-chord-mode 1)
;; キーを押した際にどこまでの間隔を許容するか
(setq key-chord-two-keys-delay 0.04)

(key-chord-define-global "gl" 'goto-line)
(key-chord-define-global "fk" 'helm-for-files)
(key-chord-define-global "fj" 'helm-M-x)

(setq key-chord-two-keys-delay 0.04)で、キー入力の間隔を指定します。小さければ小さいほど、同時押しをする必要があり、大きくすれば逆に同時押しでなくても反応するようになります。
glのように頭文字を割り当てたり、よく使うコマンドについては、ホームポジションにあるキーを設定すると非常に楽になります。 私自身、fjhelm-M-xに割り当てることで小指の負荷をかなり減らすことができました。

おわりに

エディタを拡張し、どんどん便利にしていくことで、作業効率を上げることができます。
他にも有用な拡張は多く存在するので、ぜひ調べてみてください。

参考

今回は以下のサイトを参考にさせていただきました。ありがとうございます。

http://rubikitch.com/2016/02/11/sd1503-helm/

http://qiita.com/tadsan/items/9cc262e1772edb630dd9