HOME もうひとつの Scheme 入門 書き込む

Appendix 6. Emacs の使い方


Emacs はプログラム作成が便利になるように設計されたエディタです。 プログラムの作成は、コードを書く作業と、テスト、修正のサイクルから成り立っています。 Emacs はこのサイクルがスムーズに回るように設計されています。

Emacs は非常にメジャーなエディタなので、書籍や web 上の情報が簡単に見つかります。 キーバインディングがほかの Window アプリと違うので、はじめ違和感があるかもしれませんが、 慣れればこんな便利なエディタはありません。 最近の Emacs はメニューバーがついているのでとっつきやすくなっています。

興味のある人は 入門 GNU Emacs を一読することをお勧めします。

1. 起動と終了

runemacs をダブルクリックすると Emacs が立ち上がります。 runemacs のショートカットをディスクトップに作っておくと便利です。 第1章の様に設定すると、Emacs が立ち上がったすぐ後に、処理系もついでに立ち上がります。

Emacs の終了は (C-x C-c) を使ってもいいですし、フレーム右上の X ボタンをクリックしても終了します。 そのとき、Scheme 処理系が走っているので、
"本当にとめてもいいか" 聞いてきますが、 "yes" と答えます。

2. ファイルのオープンと保存

(C-x, C-f) でファイルを開くことができます。存在しないファイル名を与えると新規にファイルを作成します。 初期ディレクトリは .emacs に以下のように記述して設定することができます

; C:/doc/scheme を初期ディレクトリにする
(cd "C:/doc/scheme")
(C-x C-f) と入力するとミニバッファ (フレームの下にある細長い領域) で、ファイル名を聞いてきます。 直接ファイル名を入力してもいいですし、ファイル名を忘れたときは以下のようにすることもできます。 末尾を "/" にして、ディレクトリを指定すると、メインのバッファにディレクトリのリストが表示されるので、 その中から開きたいファイルを選んで リターンするとファイルが開けます。 メニューの File → Open File でもファイルを開くことができます。 ファイルを上書き保存するときは (C-x, C-s)、 別名で保存するときは (C-x, C-w) とします。 これも、メニューからでもできますので、なれないうちはメニューからやってもいいでしょう。

3. インデント

C-i または TAB でインデントします。 また、改行とインデントを同時に行うには C-j を使います。

4. カット、コピー、およびペースト

マウスで、範囲を選択する方法もありますが、以下のようにすることもできます。
  1. まず、矢印キーまたはマウスで、選択範囲の初めにいって C-@ を押します。すると、そこが選択範囲の始点になります。
  2. 次に、 選択範囲の終点に行って、C-w を押すと、選択範囲がカットされます。 また、Alt-w を押すと 選択範囲がコピーされます。
  3. 最後に、ペーストしたい場所に行って C-y を押すとその場所にペーストされます。

5. 領域の分割

Emacs は領域を自由に分割、統合できるので、編集作業の効率が向上します。
C-x 2
ウィンドウを上下に2つに分割します。
C-x 3
ウィンドウを左右に2つに分割します。
C-x 1
ウィンドウを1つにします。
C-x 0
カーソルのあるウィンドウを消去します。

6. Scheme モード特有の機能

Emacs は編集しているファイルごとに機能が切り替わります。Scheme のソースコードを編集しているときは メニューバーに Scheme という項目が現れることもそのひとつです。 Scheme モードの便利な機能として 直前の S 式の評価 (C-x C-e) があります。 これを使うと、上下のウィンドウを行ったりきたりしないで編集とテストを行うことができます。 まず、下のように、関数定義と、予想される結果を編集します。
;; 台形の面積を求める関数
; (trape 1 2 2) ==> 3
; (trape 1 1 1) ==> 1
(define (trape d1 d2 h)
  (/ (* h (+ d1 d2)) 2))
その後、関数定義の最後の括弧にあわせて (C-x C-e) を押し、 それから、テストのところに行き、閉じ括弧にあわせて (C-x C-e) を押します。 この例の場合は (trape 1 2 2)(trape 1 1 1) の閉じ括弧で (C-x C-e) を押します。 すると、図 2 のように、下の処理系のバッファに結果が表示されるので、バッファを移動しないで編集とテストを行うことができます。 テストはコメントアウトされているので、ロードやコンパイルしたときには無視されます。また、ソースコードを読むときにテストコードも一緒にあった方が 早く理解できます。

図 2: C-x C-e を使って編集とテストをしているところ

Emacs + scheme について詳しくは以下のサイトを見てください。