はじめに
- Emacsの初心者であるが、設定ファイルをいじるのは好き
- 最近、Emacsの設定ファイルを整理しているのだが、色々ありすぎてどのパッケージを利用すればいいのか迷った
- いつも通りすごい人の設定ファイルで利用しているパッケージを調査し、参考にさせてもらう
- 今回は、syohexさんのdotfileで利用しているパッケージを勝手に調査する
- 数が多いので、割愛している部分も多い自分が利用している言語のみを調査する
■ Setup
cl-lib
- Emacs LispでCommon Lispの強力な関数やマクロを利用できるようにするパッケージ
- 昔はcl.elだったが現在は整理され、cl.elは非推奨で、cl-lib.elが推奨になっている
- Emacs24からbuilt-inパッケージ(デフォルトでインストール済)になっていて、最新版のemacsであればインストールは不要でrequireするだけ
- Emacs Lispだけだとシンプルなので、ループ処理がわかりづらくなったりするが、cl-libを利用すればシンプルに記載できる
- Common Lispをばんばん書きたい人はrequireしておいた方がいい
(cl-loop for x in '(a b c d e)
do (print x))
- 参考;
init-loader
- Emacsの設定ファルを分割して読み込むことができるようにするパッケージ
- Emacsの設定ファイルを分割することで、1つ1つのファイルがシンプルになり、デバックもしやすい
- ただ、分割しすぎても探すの大変だったり、逆に管理が大変になるという意見もある
- 参考;
exec-path-from-shell
- GOROOTなどの環境変数をEmacsに引き継ぐためのパッケージ
- 参考;
■ Utilities
syohex/emacs-editutil
- syohexさん自作の個人用ユティリティー設定のパッケージ
- 自分用にキーバインドの設定などいろいろと設定している
- 参考;
syohex/emacs-progutil
- syohexさん自作のプログラミング用ユティリティー設定のパッケージ
- プログラミング言語ごとに準備していて、
- 参考;
■ Input Method
mozc
- GoogleがOSSとして公開している日本語入力システムのMozcをEmacsで利用できるようにするパッケージ
- MozcはGoogle日本語入力から派生したものだが、辞書等は別で、Google日本語入力の変換品質はもたない
- 参考;
■ undo
undo-tree
- Emacs標準でもundo,redo機能は付いているが非常に使いづらい
- undo-treeはEmacsのundo,redo機能を強化してくれるパッケージ
- undo,redo編集履歴をTree形式で表示することができる
- 参考;
■ highlighting
vline
- 現在桁をハイライトするパッケージ
- 参考;
col-highlight
- 現在桁をハイライトするパッケージ
− vlineの拡張版で、内部でもvlineを利用している - 参考;
■ Search (Moving cursor)
syohex/emacs-anzu
- 現在の検索位置を画面に表示するためのパッケージ
- syohexさんがvim-anzuをEmacs用にportしたものらしい
- 参考;
goto-chg
- 編集箇所のカーソル移動を簡略化するパッケージ
- 参考;
abo-abo/avy
- avy.elはace-jump-modeの新実装であり、画面のカーソル移動を強化するパッケージ
- 参考;
■ Pair
paredit
- lispを記述するのを助けてくれるパッケージ
- カッコを補完してくれたり、カッコのバランスを保ってくれたりして、ミスを防ぐ
- emacs-lisp-modeなどのメジャーモードと組み合わせて利用するマイナーモード
- 参考;
■ Buffer
emacs-jp/elscreen
- 古くからあるウィンドウ構成管理、Emacsをタブ化してくれるパッケージ
- ターミナルで言うとtmuxやscreenのようなもの
- 参考
popwin
- ヘルプバッファや補完バッファをポップアップで表示してくれるパッケージ
- ポップアップウィンドウを管理できるようになる
- 参考
lukhas/buffer-move
- バッファを上下左右に簡単に移動できるようにするパッケージ
- 参考
syohex/emacs-import-popwin
- インポート文周辺をポップアップしてくれるパッケージ
- 内部的にはpopwin.elを利用しており、pythonやgolangに対応している
- 参考
■ Directory
syohex/emacs-dired-k
- dired表示をカラフルにしてくれるパッケージ
- 参考
■ auto-complete
auto-complete/popup-el
- ポップアップインターフェースを管理するパッケージ
- 参考
auto-complete/fuzzy-el(無効)
- auto-complete.elを曖昧マッチに対応させるためのパッケージ
- defaultでなくdefualtと間違えて打ってしまってもちゃんと補完が出力される
- 参考
auto-complete/auto-complete(無効)
- m2ymさんが開発した言わずと知れた和製のEmacsの自動補完パッケージ
- ただ、海外では圧倒的にcompany-modeの利用が多いらしく、そちらを使ったほうが良さそう
- syohexさんはcompany-modeに移行したため、無効にしていると思われる
- 参考
■ company
company-mode
- 世界中で利用されている自動補完パッケージ
- Emacsに絶対にいれるべきパッケージの1つ
- auto-completeとcompanyの違い
- 参考
■ helm
helm
- Emacsでインクリメンタルに補完や検索をするためのフレームワーク
- 有名なanything.elのフォークで現在でも頻繁に開発が行われている
- Emacsに絶対にいれるべきパッケージの1つ
- 参考:
emacs-helm/helm-descbinds
- helmプラグインの1つで、describe-bindingsのhelmインタフェース
- 参考:
syohex/emacs-helm-gtags
- helmプラグインの1つで、GNU globalのhelmインタフェース
- メソッドの定義先に簡単に移動できたり、 メソッドの参照元の一覧を表示できたりする
- 参考:
syohex/emacs-helm-ag
- helmプラグインの1つで、超早いgrepであるTheSilverSearcherのhelmインタフェース
- 参考:
syohex/emacs-helm-pydoc
- helmプラグインの1つで、Pydocのhelmインターフェース
- 参考:
syohex/emacs-helm-godoc
- helmプラグインの1つで、godocのhelmインターフェース
- 参考:
■ Repeat Utility
myuhe/smartrep
- 連続して操作する際にPrefixを省略してくれるパッケージ
- 参考
yasnippet
- 公式で、自分で定義したテンプレートをコード内に穴埋めで挿入できるパッケージ
- Emacsに絶対いれるべきパッケージの1つ
- 参考
- https://github.com/joaotavora/yasnippet
■ Golang
go-mode
- golangのためのメジャーモード
- コードがハイライトされ、M-x godocとかでドキュメントもひけるようになる
- 参考
syohex/emacs-go-eldoc
- ミニバッファにドキュメントがでるようになるパッケージ
- 参考
golint
- M-x golintでgolintをかけることができるようにするパッケージ
- 参考
go-guru
- guruをかけることができるようにするパッケージ
- 参考
nsf/gocode
- golangのコード補完のためのパッケージ
- 参考
syohex/emacs-go-impl
- vim-go-implのEmacs版
- implというgoのコマンドラインツールをEmacsで利用できるようにしたもので雛形を生成してくれるパッケージ
- 参考
shohex/emacs-go-add-tags
- 構造体のフィールドタグを挿入してくれるパッケージ
- 参考
■ Python
emacs-company-jedi
- Pythonの補完パッケージ
- 参考:
flycheck
- コーディング中にリアルタイムでコードのシンタックスチェックやスタイルチェックを行うパッケージ
- 参考:
■ shell
syohex/emacs-quickrun
- emacs内でコードを実行して,結果をバッファに表示することができるパッケージ
- 参考:
syohex/emacs-eshellutil
- Emacs上でEshellを利用するためのユーテリティパッケージ
- 参考:
■ VCS
magit
− EmacsのGitクライアント
- ターミナルに移らず、EmacsだけでGit操作が可能になる
- 参考:
emacs-git-gutter
- Sublime TextのGitGutterのEmacs版で、前回からの差分を視覚的に確認できるようにするパッケージ
- 参考:
emacs-git-messenger
− git-messenger.vimのEmacs版で、コミットメッセージを確認できるようにするパッケージ
- 参考:
■ Documentation
dash-at-point
- Mac専用のDashというドキュメントリファレンスアプリをEmacsから利用するためのパッケージ
- 参考:
zeal-at-point
- Zealというドキュメントリファレンスアプリを利用するためのパッケージ
- Linux,Windowの場合は、dash-at-pointではなく、zeal-at-pointが呼び出される
- 参考:
■ Key
which-key
- guide-keyの改良版で、プレフィックスキーの次のキー操作を一覧で表示してくれるパッケージ
- これがあれば必要最低限のコマンドだけ暗記すれば良さそう
- 参考:
■ Vim
evil
- Emacs上でVimをエミュレートするパッケージ
- Evilは、extensible vi layerの略である
- 参考:
結論
- 勝手にすごい人のパッケージを調査したが、最初からわかってはいたけど勉強になる部分ばかり
- syohexさんは自作系が多くて本当にすごい。いつかパッケージとか自分でかけるようになりたい
- とりあえず、el-get,company,helm,init-loder,yasnippetとか有名なパッケージは利用しつつ、
細かいところはすごい人の設定ファイルをパクろうと思います - それにしてもemacsの設定ファイルは何時間でもいじっていても楽しいですね