できる Emacs 第一回

     /⌒  ⌒\
   /( ●)  (●)\     久しぶりだお!
  /::::::⌒(__人__)⌒::::: \    みんなのアイドル、やる夫だお!
  |     |r┬-|     |       今日はEmacsについて勉強するお!
  \      `ー'´     / 


     / \  /\ キリッ
   / (ー)  (ー)\         というわけでEmacsについて教えるお!
 /   ⌒(__人__)⌒  \
 |      |r┬-|     |
  \     `ー'´    /


……
………
すいません、間違いました。

そういえば、次のお勤め先はEmacs必須らしいので、使い方を覚えないと。新人研修で基本的なことは教えてもらえるらしいんで、あとは応用編をどうやって学習するか? 「週刊できるEmacs」みたいな本があれば良いんですけれども。

とリクエストがあったので、自分の Emacs 環境を紹介します。こうやって書いておくと hito さんあたりから色々と突っ込みが入ると思うので、結果的に私の Emacs 環境もパワーアップという魚心あれば下心。

外堀を埋める

まず Emacs に入門するため、Ubuntu の環境から整備しましょう。以下のコマンドを実行してください。


$ gconf-editor
desktop -> gnome -> interface -> gtk_key_theme の値を Emacs に変更してください。これで Gnome のキー操作を Emacs 風のバインドで使うことができるようになります。次に FirefoxFiremacs アドオンを追加しましょう。Firefox での操作が Emacs の(ry

インストール

UbuntuEmacs をインストールするには以下のコマンドを実行します。emacs-env-ja メタパッケージは使わず、手動で構築してみましょう。


$ sudo apt-get install emacs
起動するとこんな画面が表示されたりします。

ぶっちゃけデフォルト状態の Emacs は死ぬほど使いづらいので、ここから自分だけの Emacs へ育て上げていく必要があります。なお Emacs の設定は ~/.emacs もしくは ~/.emacs.el に記述します。

カーソルを移動する前と後に『サー』と言え!

Emacs キーバインドが体に染みついていない人*1は、まず鬼軍曹をインストールしましょう。カーソルキーのような地の果てにあるキーでカーソル移動をしていると、右手がホームポジションに戻ってくる前に戦争が終わってしまいます。是非とも C-n C-p C-f C-b でのカーソル移動に慣れてください。また、デフォルトでは C-h がバックスペースになっていないので、キーバインドを設定する必要があります。
こういった elisp をインストールする場合は、ロードパスの通ったディレクトリにスクリプトを配置する必要があります。例えば ~/.elispelisp をインストールして使用できるようにする場合は以下のようにします。


;; .emacs に以下の記述を追加
(setq load-path(cons "~/.elisp" load-path))

;; 鬼軍曹を有効にする
(require 'drill-instructor)
(setq drill-instructor-global t)

;; C-h をバックスペースに割り当てる
(global-set-key "\C-h" 'delete-backward-char)

追記

鬼軍曹の中で C-h の設定がなされているので、鬼軍曹をを有効にすると (global-set-key "\C-h" 'delete-backward-char) の設定は不要です。

日本語入力環境

日本語入力には anthy-el を使用するのが手っ取り早いでしょう。以下のコマンドでインストールできます。


$ sudo apt-get install anthy-el

;; .emacs に以下の記述を追加
(require 'anthy)

バッファ上で C-\ を入力することで日本語入力が可能になります。主なキーバインドAnthy Wiki にある通りですが、私はこれが気に入らないので l/L を x/X にバインドした anthy-el を PPA で配布しています。もし ATOK っぽいローマ字バインド*2で使いたい人はどうぞ。
追記

わざわざパッケージにしないでも、


#!/bin/bash

ANTHY='/usr/share/emacs/site-lisp/anthy/anthy.el'
DEST='/usr/share/emacs22/site-lisp/anthy'

sed -e 's/\. 76)/\. 88)/g' -e 's/\. 108)/\. 120)/g' -i ${ANTHY}
emacs -batch -f batch-byte-compile ${ANTHY}
cp ${ANTHY}c ${DEST}

でいい気がした。

便利な elisp

apt から便利な elisp を色々と入手できます。

gnuserv
既に起動済みの Emacs に接続する機能
elscreen
Emacs 上で動作する screen
w3m-el
Emacs 上で w3m を使う
emacs-goodies-el
便利なツール集っていうかぶっちゃけ rdired のためだけに
ruby-elisp
Ruby のコーディングに適したモード
html-helper-mode
HTML の記述に適したモード

利用するには .emacs への記述が必要です。


;; elscreen
(load "elscreen" "ElScreen" t)

;; gnuserv
(gnuserv-start)
(setq gnuserv-frame (selected-frame))

gnuserv と elscreen を組み合わせると

export EDITOR='/usr/bin/gnuclient -f elscreen-create'

こんな設定で、dch した時に「既に起動している Emacs 上に新しい screen を開き、そこで新規バッファを開く」ようなことが出来たりします。

*1:カーソルキーだの、バックスペースキーだのといった両生動物のクソをかき集めた値打ちしかないキーを使ってしまう人

*2:l が半角英数モードに取られているので、デフォルトでは拗音を l + 母音で入力できないので