Emacsによるテキスト編集

Emacsの操作

プログラムやマークアップ言語などテキストベースで書かれるものは、 テキストエディタというソフトウェアを 使って作成し、ファイルとして保存する。本講ではEmacsを利用するもの として必要最低限の利用方法について説明する。最初に全て覚える必要は ないが、定期的にここを読み返して最終的に全て覚えられることを目標にする とよい。テキストエディタを使いこなせるかどうかは対象言語そのものの理解の 向上速度に大きくかかわる。

用語について

以後の説明で以下の用語を用いる。

バッファ

Emacsで編集するために見えている画面(の中味)のこと。普通は ファイルの中味そのもの(のコピー)が見える。Emacs起動直後に見えている バッファは scratch buffer といい、どのファイルにも結び付けられていない。

ウィンドウ

見えているバッファ全体を囲う範囲のこと。Emacs全体の画面を複数の ウィンドウに分割して使うことができる。

ポイント

文字を打つと文字の入る場所をポイントという。 通常はカーソルの左端である。

操作の概要

Emacsではキー操作だけで全ての機能を呼び出せるようになっている。 それらキー操作はControlキーを押しながら別のキーを押したり、 ESCキーを押してから別のキーを押すようになっている。 たとえば、「ファイルの保存」は C-x C-s である。 Controlキーを押しながらxと、Controlキーを押しながらs、を連打して 初めて機能の呼び出しとして完結する。

コマンドの中止

前述したとおりEmacsの機能呼び出しは複数のキーの組み合わせで行なう ことが多い。慣れないうちは打ち間違えたり、途中まで打って分からなくなるこ とがあるが、そのような場合は

C-gコマンド入力中止

をタイプすればいつでも初期状態に戻る。

操作の取り消し

間違って文字を消しすぎたりなど、希望と反する修正操作をしたら、

C-/編集操作の取り消し(undo)

をタイプすると直前の状態に戻せる。何度も連続してC-/を押す ことでファイルを開いたときまでさかのぼってundo(アンドゥ)できる。 undoしすぎた場合はカーソル移動等undo以外の機能を使ったあとで C-/をタイプすれば、undoをundoできる。

ファイルの操作

下記一覧のうち C-x C-fC-x C-s は 今すぐ確実に覚えておこう。

C-x C-fファイルを開く(find-file)
C-x C-s編集中のファイルを保存する(save-buffer)
C-x C-w編集中のファイルを別の名前で保存する(write-file)
C-x i外部ファイルをポイント位置に挿入する
C-x kバッファの破棄(閉じること)
C-x bバッファの切り替え

ポイント移動

ポイント(カーソル)を移動するには以下のキー操作を利用する。 最初はC-nC-pC-bC-f だけ覚えておけば十分だろう。 矢印キーでもポイント移動できるが、ホームポジションから手を離さねばならず 速度的に不利なので C-nC-pC-bC-f に慣れる方が望ましい。

M-< バッファ先頭へ
M-v 1画面戻る
C-p 1行戻る
C-aM-bC-b C-fM-fC-e
行頭1語戻る1字戻る 1字進む1語進む行末
C-n 1行進む
C-v 1画面進む
M-> バッファ末尾へ

領域操作

編集バッファの「ここから、ここまで」をまるごとコピーしたり 削除したりするには

  1. 「ここから」に相当する場所をマークする
  2. 「ここまで」に相当する場所に移動して該当する操作をする

という手順で行なう。

C-SPCポイント位置を「マーク」する
C-wマークからポイントまでの領域を削除して 記憶する
M-wマークからポイントまでの領域を記憶する
C-y C-wM-wで記憶したものを ヤンクする(ペーストする)

練習として、編集バッファに以下のようなテキストを打ち込んでみよう。

CSSをすこしでも早く覚えたい

「すこしでも」を領域削除してみよう。「ここから」にあたる 「」の位置にポイント移動する。

CSSをこしでも早く覚えたい

C-SPCでこの位置をマークする。

「ここまで」にあたるのは「も」の後ろなのでそこにポイント移動する。

CSSをすこしでもく覚えたい

C-w(kill-region)で領域が削除される。

CSSを早く覚えたい

ウィンドウ分割操作

Emacsはウィンドウを分割して一度に複数のバッファを見ながら編集できる。 ウィンドウ分割のための主なコマンドは以下のとおり。

C-x 2ウィンドウを上下2分割
C-x o(小文字のオー)隣のウィンドウに移動
C-x 1ウィンドウを1つにする
C-x 0(ゼロ)今のウィンドウを消す

編集操作の練習

少し練習してみよう。実際に

~/TEST/hoge~/TEST/hero ファイルを 作成・編集し、最後にそれらを削除

という操作をしてみよう。具体的には、

  1. (KTermで) ~/TEST ディレクトリを作成し
  2. (Emacsで) ~/TEST/hoge ファイルを作成し
  3. (Emacsで) ~/TEST/hero ファイルを作成し
  4. (Emacsで) hogeとheroバッファを行ったり来たりして
  5. (Emacsで) hogeとheroバッファを閉じ
  6. (KTermで) ~/TEST ディレクトリをまるごと削除

のような流れで作業する。。

その前に効率的なウィンドウの切り替えを訓練しておこう。 マウスをどこに置いているかにかかわらず以下のキー操作が有効になっている。

C-1Emacsのウィンドウを選択
C-2KTerm(大きい方のkterm)のウィンドウを選択
C-3Console:(小さい方のKTerm)のウィンドウを選択

Controlキーを押しながら数字の1〜3を押してウィンドウが切り替わる様子を 4〜5回繰り返して理解しよう。上記の6つの手順で「KTermで」とある操作の 直前にはC-1を、「Emacsで」とある操作の直前にはC-2 をタイプしよう。

  1. ~/TEST ディレクトリの作成

    KTermでmkdirする。

    % mkdir TEST
    % ls -F
    Mail/           TUTORIAL.ja     maildir/        public_html/
    TEST/           help            memo            script/
    % cd TEST
    % ls
    (空っぽなので何も表示されない)
    
  2. ~/TEST/hoge ファイルの作成

    Emacsで C-x C-f すると編集したいファイル名を 聞いてくるので ~/TEST/hoge を入力する。

    Find file: ~/TEST/hoge
    

    TESTを入力するときに、最初の1〜2字入れたところで [Tab]キーを押すと残りが補完される。 ファイルを開いたら以下の内容で保存(C-x C-s)する。

    ほげほげほげー
    やあやあやあー
    

    保存できたらKTermに移り、実際に書き込まれているか確認する。

    % cat hoge
    ほげほげほげー
    やあやあやあー
    
  3. ~/TEST/hero ファイルの作成

    Emacsに戻り~/TEST/heroファイルを開く。 C-x C-fしてファイル名を入力する。

    Find file: ~/TEST/hero
    

    新規に開いたら以下の内容で保存する。

    こっちはへろへろです。
    

    こちらもKTermで確認してみよう。

    % cat hero
    こっちはへろへろです。
    
  4. hogeとheroバッファの往復

    EmacsでC-x bをタイプすると、 切り替えたいバッファ名(ファイル名と同じ)を聞いてくるので hogeまたはheroを入力し相互を往復する。何度か繰り返そう。

  5. hogeとheroバッファの破棄

    EmacsでC-x kとタイプすると、 閉じたいバッファ名を聞いてくるので hoge または hero を入力してそれを閉じる。 未保存のバッファはうまく閉じられないので必ず保存してから C-x kする。バッファ名を入れずにリターンを押すと 現在編集中のバッファが閉じられる。

  6. ~/TEST ディレクトリの全削除

    KTermでホームディレクトリに戻る。

    % cd
    % ls -F
    Mail/           TUTORIAL.ja     maildir/        public_html/
    TEST/           help            memo            script/
    

    rmコマンドで、TESTディレクトリを中にあるファイルごと一気に消してみる。

    % rm -rf TEST
    % ls -F
    Mail/           help            memo            script/
    TUTORIAL.ja     maildir/        public_html/
    

以上の操作を3〜4度繰り返してみよう。とくに「ファイルの保存」と EmacsとKTermの往復をスムーズに行なえるようにするとのちのちの 作業効率が格段に上がるので練習しておこう。

yuuji@koeki-u.ac.jp