システムプログラム(第-1回): Emacs

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
https://www.coins.tsukuba.ac.jp/~syspro/2024/2024-05-15/emacs.html
あるいは、次のページから手繰っていくこともできます。
https://www.coins.tsukuba.ac.jp/~syspro/2024/
http://www.coins.tsukuba.ac.jp/~yas/

■Emacsの基本

メモ帳とか、単純なテキスト・エディタ、ワードプロセッサでは、 プログラムを開発することはできない。 プログラム開発には、それに適したテキストエディタを使う。

情報科学類標準のテキスト・エディタは、Emacs である。 他のエディタが好きな人でも、若い人は、いろいろ使ってみることを推奨する。

GNU Emacs (ぐにゅー いーまっくす)。 Free Software Foundation開発。 Richard Stallman 原作。

いくつかの種類がある。

◆キー表記

C-
Control キーを押しながら押す
M-
Meta キー押しながら押す

Meta キーがない時には、Esc キーを使う。 例えば、M-x と打ちたい時には、 例えば、まず、Escキーを打ち(離し)、その後、x キーを打つ。 (キーを2回に分けて打つ。) ただし、説明の表記は、M- のままなので注意する。

◆端末で実行

端末(遠隔ログイン含む)で Emacs を実行するには、次のように打つ。
$ emacs file.txt [←]
「file.txt」は、編集したいファイル名。他のファイルを編集したい時には変 更する。ファイルが存在しなければ、新しく作成する。ファイルが存在すれば、 そのファイルの内容を変更する。

◆C-x C-s C-x C-c

Emacs で編集したファイルを保存して終了するには、C-x C-s C-x C-cC-x C-s」は、保存の意味。「 C-x C-c」が終了の意味。

◆保存しないで C-x C-c で終了

編集した後、保存しないで終了しようとすると、Emacs から問い合わされる。
Save file ファイル名? (y, n, !, ., q, C-r, d or C-h) []
こういう時には、次のどれかをすると良い。

◆C-g

どんなキーを打ったのかわからなくなった時、 困った時には、C-g を複数回連打する。

◆カーソル移動

キーを打った時に、文字が入る場所をカーソルという。

カーソル移動には、矢印キー(←、→、↑、↓)も使えるが、 手がホームポジションから離れてしまうのでよくない。 Control キーを使う方法を使う。

C-b	backward-char
C-f	forward-char
C-p	previous-line
C-n	next-line
このキー操作は、多くの「端末」でも使える。 特に、C-p (Control+P) は、直前のコマンドを再実行する時に便利なので、必ず覚える。

◆削除

 

カーソルの左側を削除する方法とカーソルの右側(カーソルのある場所)を 削除する方法がある。

C-d	delete-char		カーソルがある文字(右)を削除
DEL	delete-backward-char	カーソルの左の文字を削除
C-k	kill-line		カーソルがある文字(右)から行末まで削除
				空行なら1行削除

◆カット&ペースト、コピー&ペースト

,

マーク
C-SPC (Control + Space キー)または C-@ で設定する。 うまくいくと、ミニバッファに Mark set と表示される。 カーソルを動かしても移動しない。 次に新しいマークをセットするまで有効。
ポイント(カーソルのある位置)
カーソルを動かすと移動する。
リージョン(領域)
マークした場所とカーソルの間
リージョンに対する操作には、さまざまなものがある。 カットしたもの、または、コピーしたものをペーストするには、C-y を 使う。

テキストの移動(カット&ペースト)の方法

  1. C-SPC、または、C-@ でマーク
  2. カーソル移動
  3. C-wでカット
  4. カーソル移動
  5. C-yでペースト
コピー&ペーストの方法
  1. C-SPC、または、C-@ でマーク
  2. カーソル移動
  3. M-w、または、Esc wでコピー
  4. カーソル移動
  5. C-yでペースト

◆大量の削除

カット&ペーストのカットだけをやる。
  1. C-SPC、または、C-@ でマーク
  2. カーソル移動
  3. C-wでカット

◆複数のプログラムで書き換え

1 つのファイルを、同時に複数のプログラムで書き換えると問題が生じる。 (端末を複数開いて、複数の端末で emacs 実行し、同じファイルを書き換えると問題が生じる。) 1つのファイルは、同時には 1つのプログラムで修正する。

Emacs には、1 つのファイルを複数の Emacs で編集しないようにするために、ロックの機能がある。 複数の Emacs で編集しようとしていることを検出すると、Emacs は次のような警告を発する。

ファイル名 locked by ユーザ名@コンピュータ名 (pid 番号): (s, q, p, ?)?[]
普通は、qと答えて、編集しない。 s では、ロックを (steal) して編集、 p では、ロックはそのままで編集できるが、良い方法ではない。

◆Emacsを終了してから端末を終了すること

Emacs が動いている端末のプログラムのウィンドウを閉じては いけない。そうすると、次のようなトラブルが生じることがある。

実行と逆順に終了するのが良い。例えば、端末のプログラム(とローカルのシェル)、ssh(と遠隔のシェル)、emacs の順に実行した ら、emacs、遠隔のシェル(とssh)、遠隔のシェル、端末のプログラムの順に終了する。

注意: ローカルのシェルを終了しウィンドウを閉じても、端末のプログラムが実行し続けていることがある。 必要なら端末のプログラムもきちんと終了すること。

◆undo

undo (操作を元に戻す)という考え方がある。C-x u。

◆Emacs補完機能

Emacs で C-x C-f 等でファイル名を打つ時、補完機能を使うと便利である。 練習問題 emacs、タブキーによる補完機能

◆Emacs info

Emacs のマニュアルは、Emacs の中で info という機能を実行して表示できる。

M-x info[←]
info は全体として木構造になっている。 練習問題 Emacs の中の info 機能参照。

◆英語チュートリアル

Emacs にはチュートリアル機能(自習機能) がある。Emacs のキー操作は、英語の単 語を元に作れている。このことは、英語でチュートリアルを実施するとよくわ かる。 練習問題 Emacs チュートリアル練習問題 Emacs英語チュートリアル参照。

■Emacsで複数のファイルを扱う

◆insert-file

Emacs にはファイルを挿入する機能がある。

◆別のファイルへ保存

読み込んだファイルとは別のファイルに保存することができる。 前回のレポートを修正する時に便利。早めに C-x C-w で書き込むこと を奨める。さもないと元のファイルを壊してしまうことになる。

類似のことは、cp コマンド等で元のファイルを別のファイルにコピーしてから、 別のファイルを Emacs で修正してもできる。

◆Emacs のバッファとウィンドウ

Emacs のバッファは、ハードウェアのメモリを抽象化したもの。ファイルの内 容を読み込み、編集できる。保存しなければ、失われる。

Emacs でウィンドウとは、バッファの一部を表示する画面。 。 。

Emacs のウィンドウ、一部表示、バッファ、ファイル、読み込み、保存
図? Emacsのウィンドウとバッファとファイルの関係

キー 説明
C-x 2 ウインドウを2つに分割(現在のバッファを複数ウインドウで表示)
C-x 1 ウインドウを1つにする(他のウインドウを閉じる)
C-x 0 現在のウインドウを閉じる
C-x o 他の(other)ウインドウにカーソルを移動。
C-x C-b バッファのリストを表示
C-x b 別のバッファを表示する

◆Emacs のバッファとウィンドウの使い道の例

■Emacsの検索と置き換え

Emacs には、通常の検索とインクリメンタルな検索の2種類の検索がある。 インクリメンタル・サーチの途中で、検索する文字を打つ代わりに、C-s, C-r を打つと次に見つかった場所にカーソルが移動する。

◆Emacsの検索と文字列の置換え

M-x query-replace (M-%, Esc %) が便利。

M-% と打つと、ミニバッファで次のように聞かれる。

Query replace: 置き換え前の文字列[←]
Query replace 置き換え前の文字列 with: 置き換え後の文字列[←]
キー意味
y (または SPC) 置き換え
n 次の候補に移動
q 終了
! 以降すべて置換
Emacs query-replace

その他に、次のような置換え機能がある。 。


Last updated: 2024/07/30 22:09:11
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>