意識の高いLISPマシン

藤原惟/すかいゆき(@sky_y)の技術用ブログ

Emacsで日常に彩りを〜普段使いのEmacs入門〜

この記事はEmacs Advent Calendar 2011の24日目です。
昨日は @r_takaishi さんのEmacsのデータストアを見てみる でした。
明日は @daimatz さんです。

はじめに

この記事では、Emacs挫折歴8年の私が挫折した経緯をふり返りながら、
初心者の方が日常生活でEmacsを使えるようになるまでをレクチャーします。

ライトユーザにとって、Emacsは敷居が高い

この記事で対象とするライトユーザは、以下のような人たちです。

  • WindowsまたはMacユーザ
  • たまにテキストエディタ(not Emacs)を使う
  • 端末?なにそれ
  • 友人にEmacsを勧められたけど、いまいちインストールする気にならない
  • Emacsインストールしたことあるけど、結局使ってない


このような人々が、日常的に「Emacsに触ってみよう!」という気になるまでには、
いくつかの関門があります。

ライトユーザのよくある声

もとい、Emacsをいまいち使えてなかった過去の自分を回想します。

起動が遅すぎる

多くのテキストエディタが軽量・高速をウリにしているのに、
Emacsは起動がめちゃくちゃ重い。
特に、普通のテキストエディタみたいに1ファイル1枚で起動したら、
Emacsは重いし使いづらいし・・・Emacs使うのやめよ。

→ 発想の転換:Emacsを起動しっぱなしにすればおk。
あとで説明します。


Emacs Lisp分からん

なんで、たかが設定のためだけに、よく分からん言語を勉強しないといけないの?

→ 最初はコピペでおk。理解は後回し。
Emacsに慣れてからEmacs Lispを触り始めましょう。

Windowsユーザ:xyzzyでいいじゃん

ほぼEmacsだし、設定GUIでできるし、これで良くね?

→ 本物のEmacs(MeadowまたはNT Emacs)は、もっとすごいぞ。
yasnippetとか、org-modeとか、wdiredとか、anything.elとかを知ると、xyzzyには戻れなくなる。
情報も多くて助かるし(るびきち本とか最強)。
Emacsに慣れておくとMacやLinuxでも設定が使い回せて後々捗るぞ。


Macユーザ:普通のテキストエディタでもEmacsキーバインドっぽいの使えるし

とりあえずEmacsキーバインドが使えたらいいだけだから、僕、満足!


→ 慣れの問題だけど、個人的にはEmacsに慣れてしまうと、
Mac標準のキーバインドだけでは足りない気がしてくる。
まずは日常使いのエディタから初めて、
徐々にyasnippetとか、org-modeとか、wdiredとか、anything.elとか(ry

普段使いのエディタとして使おう

この記事のゴールは、普段テキストエディタを使う場面で、Emacsを使えるようにすることです。


まず最初のインストールでつまずかないことが大切。
インストールができたら、普段の生活で気軽に使えるようにEmacsを設定していきましょう。

まずはインストール

いまやEmacsのインストールは、どのOSでも簡単にできます。

Windows: gnupackで一発

gnupackというパッケージを使うと一発です。*1
gnupack Users Guide
日本語環境も含めて設定済みなので、いきなり使えます。
cygwingvimもついてくるので、Windows上でUnix環境やVimを試してみたい方にもオススメ。

あとで説明しますが、gnupackでは、Emacsの設定ファイルを置くディレクトリ「.emacs.d」が、
以下のディレクトリになる、ということだけ覚えておいてください。

(gnupackを解凍したディレクトリ)\home\.emacs.d
※ 例えば(gnupack_devel-7.02.exeをダウンロードした場合): C:\Users\sky-y\gnupack_devel-7.02\home\.emacs.d


Mac: 初心者はCarbon Emacs

Carbon Emacsというパッケージを使うと、
「アプリケーション」フォルダにドラッグアンドドロップでインストールが完了します。
Emacs本体に加えて、いくつかのEmacs Lispパッケージや日本語環境の設定が入っているので、
初心者にお勧めです*2

http://homepage.mac.com/zenitani/emacs-j.html


Emacsの設定ファイルを置くディレクトリ「.emacs.d」は以下の通りです。

~/.emacs.d/
(「~」はホームディレクトリ(ユーザの名前が付いているフォルダ)という意味です)


Emacs設定、最初の一歩


最初に覚えることは、先ほど述べたEmacs専用ディレクトリ「.emacs.d」の下に
次の2つを入れておく、ということです。

  • elisp ディレクトリ : 外部サイトから手に入るEmacs Lisp (ほげほげ.el)を、ここに入れておきます。
  • init.el : Emacsの設定用ファイル。

※ 場合によっては、「.emacs.el」とか「.emacs」というファイルがあるかもしれません。
昔はこれらのファイルに設定を書くのが主流でしたが、
現在の主流は .emacs.d/init.el に設定を書く、という方式なので、
こちらに合わせましょう。

Step 1. Emacs専用ディレクトリを作る

まずは、以下の手順でEmacs専用ディレクトリを作ります。
1. 「.emacs.d」ディレクトリを作る (既にあればそのまま使う)
2. 「.emacs.d」ディレクトリを開き、「elisp」ディレクトリを作る



Windowsでgnupackを使った方は、既に「.emacs.d」があるはずなので、
そのまま「elisp」フォルダを作ってください。



ホームディレクトリに「.emacs.d」を作りましょう(場合によっては既にあるかも)。
その後、Finderでショートカットキー「command+shift+G」を押すと以下のような画面が出るので、
「~/.emacs.d」と打って移動してください。



最後に、「elisp」フォルダを作ります。

Step 2. init.elを開き、コピペする

init.elがある場合は、どんなエディタでもいいので開きます。
ない場合は「.emacs.d」の下に新規作成。



付属のテキストエディタで保存する時に、
ファイル名に「~」を打つとパスを入力する画面が出てくるので、
そのまま「~/.emacs.d」と打つと「.emacs.d」ディレクトリに保存が出来ます。


init.elを開いたら、以下をコピペしましょう。
既に何か書いてあったら、最後の行に追加しましょう。


ここで重要なのは、意味を考えないことです。
何も考えずコピペしましょう。

    ;; load-path を追加する関数を定義
    (defun add-to-load-path (&rest paths)
      (let (path)
        (dolist (path paths paths)
          (let ((default-directory (expand-file-name (concat user-emacs-directory path))))
    	(add-to-list 'load-path default-directory)
    	(if (fboundp 'normal-top-level-add-subdir-to-load-path)
    	    (normal-top-level-add-subdirs-to-load-path))))))

    ;; load-pathに追加
    (add-to-load-path "elisp")

    ;; auto-install.el 
    (when (require 'auto-install nil t)
      ;; インストールディレクトリを設定
      (setq auto-install-directory "~/.emacs.d/elisp")
      ;; EmacsWikiに登録されているelispの名前を取得
      (auto-install-update-emacswiki-package-name t)
      ;; install-elispの関数を利用可能にする
      (auto-install-compatibility-setup))
	    
    ;; emacsclientを使えるようにする
    (server-start)

Step 3. auto-install.elをインストール

elisp ディレクトリの使い方を練習するついでに、
インストールしておくと後々便利な auto-install.el を導入しておきます。
これで後々、Emacs Lispの導入が楽になります。


1. auto-install.el を適当な場所にダウンロードします。
auto-install.el
2. auto-install.elを「.emacs.d/elisp」ディレクトリにコピーします。これでインストール完了。


参考:auto-install.elの基本的な使い方
(auto-Install.el - 非平衡日常 を引用改変)

     ほげほげ.elをインストールする場合
     1. M-x auto-install-from-emacswiki RET ほげほげ.el RET でファイルをダウンロード
     2. C-c C-cでインストール
	
     ただし、anythingをインストールする場合は
     1. M-x auto-install-batch
     2. anything


補足:
-「M-x」は Windows: Alt-x (Mac: option+x) のあとに、コマンドを入力
-「C-c C-c」は Windows: Ctrl-c を2回押す (Mac: control+c を2回押す)


Step 4. コーヒーを飲む。


最初のステップはこれで終わり。あとは、次の基本を守れば大丈夫です。


1. 外部サイトから取ってきたEmacs Lispelisp ディレクトリに突っ込む
(auto-install.elを使う場合は、先に紹介した通りにやれば、勝手に入れてくれます)
2. 必要な設定を init.el にどんどんコピペする
3. 設定が終わったら再起動する



発想の転換:Emacsを常に起動させよう


Emacsは最初の起動が重いだけ。
ということは、一度起動したものを使い回す、という使い方をすれば良いのです。
今度は、このような使い方をするような設定をしていきます。


少し説明しておくと、Emacsのパッケージには通常「emacsclient」というものが付属しています。
これを起動すると、既に起動しているEmacsで開いてくれるのです。つまり、

  1. PC起動と同時にEmacs本体を起動する
  2. ファイルに開く時は、emacsclientで開く

という使い方です。これによって、ファイルが一瞬で開くようになるので、
Emacsに対する好感度が劇的に良くなります。

Step 1. init.elに設定を・・・すでに終わっていたッ!

あ...ありのまま今 起こったことを話すぜ!

    ;; emacsclientを使えるようにする
    (server-start)

な...何を言っているのかわからねーと思うが(ry

Step 2. PC起動と同時にEmacsを起動させる


Windowsの場合は、スタートボタン→すべてのプログラム→スタートアップ とたどり、
右クリックでエクスプローラーを開きます。
次に、別のエクスプローラーでEmacsのアイコンを右クリックし「ショートカットの作成」をクリック、
作成されたショートカットをスタートアップフォルダに入れたらOKです。



Macの場合は、システム環境設定から「アカウント」を開きます。
「ログイン項目」というタブをクリックすると、
スタートアップ時に起動するアプリケーションを指定できるので、
「+」を押してEmacs.appを指定します。

Step 3. テキストファイルにemacsclientを関連づけする

続いて、テキストファイルをダブルクリックしたときに
emacsclientで開いてくれるように、関連づけの設定します。



1. 環境設定の設定
コントロールパネルからシステムの設定を開きます。
Windows 7: コントロール パネル→システムとセキュリティ→システム→システムの詳細設定
Windows XP, Vista: コントロールパネルで「クラシック表示に切り替える」→システム


「詳細設定」タブで「環境変数」をクリックします。
上段、○○(ユーザ名)のユーザー環境変数で「新規」を押して、以下の値を入力します。

変数名: EMACS_SERVER_FILE
変数値: (gnupackを解凍したディレクトリ)\home\.emacs.d\server\server
※ 変数値の例(gnupack_devel-7.02.exeをダウンロードした場合): C:\Users\sky-y\gnupack_devel-7.02\home\.emacs.d\server\server

これで「OK」を続けてクリックすれば完了。


2. emacsclientを関連づける
Windowsの場合は、テキストファイルを右クリックして
「プログラムから開く」→「既定のプログラムの選択」をクリック。
(関連づけされていないファイルの場合は、「開く」
→(このファイルを開けませんと言われるので)「インストールされたプログラムの一覧からプログラムを選択する」を選択して「OK」)


emacsclientが一覧に無い場合は、「参照」ボタンで
emacsclientを指定してあげます。
このとき、「この種類のファイルを開く時は、選択したプログラムをいつも使う」にチェックを付けておきます。


emacsclientの場所は以下の通りです(2種類ありますが、emacsclientw.exeの方を使ってください)。

(gnupackを解凍したディレクトリ)\app\emacs\emacs\bin\emacsclientw.exe
※ 例えば(gnupack_devel-7.02.exeをダウンロードした場合): C:\Users\sky-y\gnupack_devel-7.02\app\emacs\emacs\bin\emacsclientw.exe


Macの場合は少し手間がかかります。


1. EmacsClient.appを作る
Platypus(http://sveinbjorn.org/platypus)というアプリを使って、
Emacsに付属しているemacsclientをMac用アプリに変換します。


このへんの手順は、以下にある拙著記事を参考にしてください。

Cocoa Emacs: emacsclientをAppに変換する - 雲行きそらゆきココロイキ

※手順1.は、要するに emacsclient.sh というファイルを作るだけの話です。



2. 拡張子ごとに関連づけする
Finder上で好きなテキストファイルを右クリック、「情報を見る」を選びます。
「このアプリケーションで開く」のプルダウンメニューで「その他」を選んだあと、
EmacsClient.app を選び、「常にこのアプリケーションで開く」に
チェックを入れて「選択」を押します。

Step 4. Emacsを起動して、動作を確かめる

さあ、最後のステップです。

1. Emacs本体を起動します。既に起動していたら、一旦終了して再起動しましょう。
2. さきほど関連づけしたテキストファイルをダブルクリックしてみましょう。
既に開いているEmacsでそのファイルが開いたら、大成功。
ようこそ、Emacsの世界へ!

次の一歩 -まとめに代えて-

ここまで来れば、あとは日常使いのテキストエディタとしてEmacsを使うのみです。
まずは最初の1・2週間だけ、我慢して使ってみましょう。
独特のキーバインドが苦手な人は、チートシートを印刷して見ながら覚えましょう。


次の一歩は、便利そうなEmacs Lispを探してコピペしまくることです。
繰り返しますが、意味なんて最初は分からなくても良いのです。
設定をコピペして、次々と表情を変えるEmacsを楽しみましょう。


例えば、color-themeなんかをいじってみると見た目が変わって楽しいです。
(/usr/share/emacs/site-lisp/にコピーする、の部分は
.emacs.d/elisp」ディレクトリにコピーする、と読み替えてください。)

Emacs Color Theme: プログラマーになりたい!


もしコピペしてうまくいかなかったら、今は設定をコメントアウトして諦めましょう。
そのうち分かる日が来ます。


このように、ウェブ上に転がっているEmacs Lispをコピペしても良いのですが、
おすすめなのは、るびきちさんが書いた「Emacsテクニックバイブル」からパクることです。(もちろん、ちゃんと買って下さいね(笑))
この本は最新のEmacs事情を踏まえて書かれているので、
本の通りにコピペを続けるだけで最先端かつ効率的なEmacs環境を作り上げることができます。
途中でEmacsに挫折した人にもオススメです。

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?


Have a happy Christmas with your Emacs!

*1:NT Emacs 23に日本語パッチを当てたやつ

*2:ただし、Emacs 22という古いバージョン。