Emacs の基本編集機能のガイド

【概要】 Emacsの操作コマンドを覚えるのは効率化のために重要である。Emacsでは、カーソル移動(Ctrl+p/n/f/b)、テキスト編集(Ctrl+k/y)、ファイル操作(Ctrl+x Ctrl+f/s)、検索(Ctrl+s)、バッファ管理(Ctrl+x Ctrl+b)、ウィンドウ分割(Ctrl+x 2/1)、リージョン指定(Ctrl+Space)などの基本機能が用意されている。

【目次】

  1. 基本的なカーソル操作とテキスト編集
  2. ファイル操作
  3. 検索・置換
  4. バッファ管理
  5. ウィンドウ操作
  6. リージョン指定とマーク設定
  7. テキスト削除
  8. 複写
  9. 貼り付け
  10. 取り消し
  11. 編集モード

1. 基本的なカーソル操作とテキスト編集

Emacsを使って効率的にテキストを編集するためには、カーソルの操作をマスターすることが重要である。

カーソル移動

テキスト削除

貼り付け

マーク設定

元に戻す(アンドゥ)

2. ファイル操作

ファイルの読み込みや保存はEmacsの重要な機能である。

ファイルを開く

ファイルを保存

3. 検索・置換

Emacsの検索機能により、効率的な編集が可能である。

インクリメンタル検索

文字列置換

4. バッファ管理

Emacsは複数のバッファを同時に管理でき、以下のような操作が可能である。

バッファ一覧

バッファ切り替え

バッファ削除

5. ウィンドウ操作

Emacsでは画面を分割して複数のバッファを同時に表示できる。

ウィンドウ分割

他のウィンドウを閉じる

他のウィンドウに移動

6. リージョン指定とマーク設定

Emacsでは、テキストの一部を選択するために「リージョン」という概念を使用する。以下がその方法である。

カーソル位置の文字すべてが領域として指定されるわけではなく、カーソルの四角形の左辺を基準として領域が指定される。この基準をポイントと呼び、リージョンはマークしたときのポイントから現在のカーソルのポイントまでとなる。

7. テキスト削除

Emacsにはdeleteとkillという2つのコマンドがある。deleteは文字を消去するのみであるが、killは切り取りの意味合いがある。killで取り除いたテキストはキルリングという領域に保存される。キルリングに保存されたテキストは、別のコマンドで取り出すことができるが、deleteで消去されたテキストはundoを使わない限り復元できない。

領域の削除

リージョンが指定された状態でCtrl+wをタイプすると、指定された領域が削除される。Ctrl+wは指定領域を削除するコマンド(kill-region)である。

8. 複写

領域をバッファから削除せずにキルリングへ格納するにはM-w(kill-ring-save)を使用する。このコマンドもマークとカーソルで領域を指定する。また、マウスの左ボタンドラッグでも複写できる。ドラッグした範囲の色が変わる。

9. 貼り付け

キルリングに取り込まれたテキストを取り出すにはヤンク(yank)を使用する。ヤンクコマンドはCtrl+yに割り当てられている。Ctrl+yをタイプするとキルリングに格納されているテキストをカーソル位置に挿入する。

さらに、その前にキルリングに記憶されたテキストも順次取り出すことができる。古い削除テキストを取り出すには、Ctrl+yコマンドの直後にM-y(yank-pop)をタイプする。M-yを押すたびに、取り出されるテキストが順々に古い削除テキストに入れ替わる。

また、マウスの中ボタンクリックでマウスカーソルがある位置にテキストを挿入することも可能である。

10. 取り消し

操作を誤った場合など、以前の状態に戻すにはアンドゥ(操作の取り消し)機能を使用する。Ctrl+/を入力すると、直前の操作を取り消すことができる。アンドゥは複数回実行できるが、回数には制限がある。

11. 編集モード

メジャーモード

メジャーモードは主モードとも呼ばれ、プログラミング言語の編集や特定の種類の文章操作に関する知識を提供する。専用のコマンドとキー設定、入力の補助を提供する。

例えば、C言語編集用のメジャーモード「c-mode」はC言語スタイルのインデントを自動で行う。メジャーモードは各バッファに一つだけ設定でき、複数のメジャーモードを設定することはできない。

メジャーモードには、以下のようなものがある(一部を抜粋):

モードのロード

新しいバッファは特に何も指定しなければ、fundamental-modeになる。メジャーモードを設定するには、そのモードをロードする。モードのロードはM-xで、コマンドを直接実行する。例えば、Cモードを設定するには、

M-x c-mode

とタイプする。

新しいバッファを作成したりファイルを読み込んだときは、バッファ名の拡張子から自動的に適切なメジャーモードをロードする。この設定は.emacsに記述できる。

(setq auto-mode-alist (append '(("\\.C$" . c++-mode) ("\\.cc$" . c++-mode) ("\\.c$" . c-mode) ("\\.h$" . c++-mode) ) auto-mode-alist))

マイナーモード

マイナーモードはメジャーモードに対して、各種の機能を付加する。これらのモードは常に設定されているというわけではない。マイナーモードを設定するにはM-xを使って直接マイナーモードの関数を呼び出す。上書きモードを設定するときは、

M-x overwrite-mode

とタイプする。モードが設定されている場合は解除され、設定されていない場合は設定される。マイナーモードはメジャーモードと異なり、一つのバッファに複数設定できる。

マイナーモードには、以下のようなものがある(一部を抜粋):