このファイルは私が便利だと思われるEmacs拡張の中で、 OCamlを書く研究室の人にも便利だろうと思ったもの集めて単純化したEmacsの設定ファイルの例です。 Emacs24.4を使うことを仮定しております。 Emacs24からはELPAというEmacsの拡張elispのバージョン管理ソフトが標準搭載されており、これを使えば楽に拡張elispをインストールできるため最新版を推奨します。
この設定は、Emacsチュートリアルは終わったがどういうふうに拡張したら良いのかわからない人に一応の例を示すためのものです。 そのまま使うことも出来ます。
GNU EmacsのページからNear GNU Serverのページにアクセスし、最新版のEmacsのソースをダウンロードします(執筆時では24.4)。emacs-24.4.tar.gzをダウンロードしたとして、
- cd ~/Download
- tar zxvf ./emacs-24.4.tar.gz
- cd emacs-24.4/
- ./configure
- make
- sudo make install
でインストールできます。上のファイルはUbuntuでの場合を想定してます。ブラウザで普通にクリックしてダウンロードすると、~/Downloadにファイルがダウンロードされますが、他の場所にダウンロードした場合はその場所にcdしてください。
コマンドの表記を一応示します。 CはCtrlキー, MはAltキーを表します。C-sなどのC or M - は同時押しの表記です。C-sの場合、Ctrlを押しながらsを押すことを表します。
- git clone <このレポジトリのURL>
- すべてのファイルを~/.emacs.dにコピー
- cd ~/.emacs.d
- emacs --script ./recommend-install.el
- emacs を実行する
- はじめからテーマが黒を基調としたものに変更されている 気に入らない場合はEmacs上のOption -> Customize Emacs -> Customize Themesから変えられます
- どのカッコが対応しているのかわかるように、カッコの上にカーソルがあるとき対応している範囲に色がつくようになっている
- タイトルバーに時計が表示る
- タイトルバーに現在行とその行で何文字目なのか表示される
- 領域を選択した最、選択した領域の情報(行数、文字数)がタイトルバーに表示される
括弧の上にカーソルをおいた時、色がキツいという人は、M-x _list-colors-display_から好きな色を選んでみてください。
OCamlプログラミングのために、
- tuareg-mode
- merlin
- ocp-indent
- ocamldebug
- utop
- ocamlspot (自動的には入りません)
を設定しています。opamを使うことを想定していますので、opamを OCaml: DebianでのOCamlの開発環境セットアップ2013年暮れ版 などをみてインストールするとよいでしょう。opam, utopの概略の説明もしています。
それから opam install merlin ocp-indent utop と端末で叩いてください。
merlinについては OCaml: merlinでcompilerのコードを補完できるようにする を見てください。
基本的には、recentf-open-files(C-x h)から最近開いたファイルを開けるようになってます。 一度開いたファイルはそこのなかでインクリメントサーチして(C-s)探すようにします。 そのために保存する履歴の数を10000, 表示する数を1000にしています。
それ以外にも_ffap-bindings_のおかげで、カーソルがディレクトリやURL上にあるときfind-fileを実行すると
- ディレクトリの上ではデフォルトの値にそのディレクトリが入っている
- URL上ではURLをブラウザで開く
という動作になります。
これは非常に便利で、あらゆる場所にリンクを埋め込めることを意味します。 例えばプログラムを書いている時に参考にしたウェブページのURLをコメントの中に書いておくと、Emacs上から瞬時に開くことが出来ます。 また外部ファイルにメモを残して、それにリンクを貼るような使い方ができます。
_view-mode_はread-onlyのとき、独自のキーバインディングを使うために閲覧モードです。 C-qでこれに移行することが出来ます。 これに片手でファイルをブラウズできるように、キーバインドを設定しました。
- viのように、hjklに各種移動を割り当て、
- n, pでページ単位の移動を行い、
- iでC-lに割り当てられているカーソルが中央にくるように移動する
というような設定になっています。 自分でこれは好きなように設定してくことが望ましいです。 view-modeを使用すれば小指にかかる負担も軽減されます。
popwinは、補完候補を表示するウインドウをポップアップのような形で登場させる拡張です。これは非常便利で、例えばバッファの補完をしていると、Emacs標準では2画面分割しているときなどでは、画面の状態を補完ウインドウを表示させるために崩してしまいます。 popwinではC-gを押せばポップアップした画面は消えるので、ウインドウの状態を破壊しません。
_popwin_については激しく挙動が変化するため、合わないと思ったら設定のコメントを読んで機能を停止させてください。 _popwin_を便利に使うときには、必ずなにかのキーにpopwinのキーマップ_popwin:keymap_を割り振ってください。 例ではC-zとS-vに割り振っています。
(popwin-mode 1) を実行することで、**で囲まれたバッファなどは下からポップアップする形で表示されるようになります。 これは、邪魔であればC-gを連打することで消すことが出来ます。
しかし、時々ポップアップされるバッファをちゃんと読みたい時があります。 そういう時には、C-z k でそのバッファを大きな画面で開くことが出来ます。
また、ポップアップされたバッファを消してしまい、もう一度見たいときにはC-z jでそれをもう一度ポップアップさせることができます。
他にも便利なキーバインドはありますが、これだけわかっていれば大丈夫です。
- 部分文字列でバッファを選択できる
- C-s, C-rでバッファを選ぶことが出来る
C-x bはよく叩くコマンドなので、このカイゼンは強力です
org-modeはmarkdownに似たプレーンテキストを装飾されたテキストのように扱うモードです。 拡張子を.orgにすると自動でorg-mode開かれます。 M-x org-present でスライドショーのようなことも出来ます プレゼンに便利なように、画像のサイズを調整できるようにimage+という拡張が入っています
インストールする拡張の中にmagit, git-guitterがあります。 magitはEmacsからgitを扱う便利なインターフェイスです。 Emacs Magitメモ などを見てください。Emacsの拡張の中でも特にお勧めです。
gitについては デザイナのためのGit入門 をみると良いと思います。
git-guitterはGitのコミットと現在のコードをdiffをとって変更点をマークしてくれる拡張です。また、マークしている部分でHistoryを見たり、その部分の変更だけを元に戻したり出来ます。
common.elの中で解説しています
- F11でフルスクリーン
- F12で最大化
- Shift+矢印で分化した画面を移動できる
- 領域を選択してない時、C-wは1ワード削除に割り当てられる
Emacsの上のタブのOptionから
- Highlight Matching ParenthesesをOnにしたり、
- Show/HideでTool-barを非表示にしてみたり、
- Option -> Customize Emacs -> Custom Themes からテーマを変更すると良いと思います。
Emacsは設定を書くことによって機能の割り当てキーを変更することが出来ます。
(define-key global-map (kbd "C-x k") 'kill-line)
この1行により、C-x kにkill-line(カーソルの行でカーソルから行末まで削除する機能を割り当てることが出来ます。kill-lineはC-kに標準で割り当ててあるのであまりこの設定の意味はないかもしれません。
詳しくはキーバインディング - 環境設定のための Emacs Lisp 入門などを参照してください。 (研究室にあるEmacs実践入門を読んでも良いと思います)
M-x customizeからGUI操作によって設定を変更することが出来ます。 それっぽい名前の設定を検索から絞り込んでも良いし、Programmingなどカテゴリから弄りたいものを探しても良いと思います。 具体的にこの機能をいじりたい、というのがわかっていれば M-x customize-group から機能の名前を入力し、変更できる要素一覧を見ることが出来便利です。
Emacsにはパッケージ管理の拡張が標準ではいっており、簡単に拡張プラグインをインストールすることが出来ます。package.elがそれです。 M-x list-package からパッケージ一覧を見ることが出来ます。
この使い方は、Packages 上で、M-x describe-mode すればわかりますが、
- iでインストールマーク
- dで削除マーク
- xでマークに対する操作を実行
- バックスペースでマークの解除
くらい分かっておけば良いと思います。
積極的にキーバインドなどの標準設定は変更してください。ありがたがる必要はありません。