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. 基本的なカーソル操作とテキスト編集
Emacsを使って効率的にテキストを編集するためには、カーソルの操作をマスターすることが重要である。
カーソル移動
- Ctrl+p / Ctrl+n:カーソルを前の行/次の行に移動する。
- Ctrl+f / Ctrl+b:カーソルを一文字前方/後方に移動させる。
- 矢印キーも同様にカーソル移動に使用できる。
テキスト削除
- Ctrl+k:カーソル位置から行末までを削除する。また、行末にいる場合は改行文字を削除する。
貼り付け
- Ctrl+y:キルリング(削除したテキストを一時的に保存する領域)から最新のテキストをカーソル位置に挿入する。
マーク設定
- Ctrl+Space:現在のカーソル位置にマークを設定する。この機能は選択範囲(リージョン)を指定する際に便利である。
元に戻す(アンドゥ)
- Ctrl+/:直前の操作を取り消す(アンドゥ)。必要に応じて操作を繰り返し取り消すことができる。
2. ファイル操作
ファイルの読み込みや保存はEmacsの重要な機能である。
ファイルを開く
- Ctrl+x Ctrl+f:ファイルを開く。Emacsは自動的に文字エンコーディングを判定する。
ファイルを保存
- Ctrl+x Ctrl+s:現在のバッファ(編集中のファイルの内容を一時的に保存する領域)を保存する。
3. 検索・置換
Emacsの検索機能により、効率的な編集が可能である。
インクリメンタル検索
- Ctrl+s:入力中にリアルタイムで検索を行うインクリメンタル検索を開始する。
文字列置換
- M-x replace-string:指定した文字列を他の文字列に一括置換する。(M-x は Alt キーと x キーを同時に押す操作を意味する)。
4. バッファ管理
Emacsは複数のバッファを同時に管理でき、以下のような操作が可能である。
バッファ一覧
- Ctrl+x Ctrl+b:現在開いているバッファの一覧を表示する。
バッファ切り替え
- M-x switch-to-buffer:別のバッファに切り替える。
バッファ削除
- M-x kill-buffer:バッファを削除する。ただし、最後のバッファは削除できない。
5. ウィンドウ操作
Emacsでは画面を分割して複数のバッファを同時に表示できる。
ウィンドウ分割
- Ctrl+x 2:現在のバッファを新しいウィンドウに表示して分割する。
他のウィンドウを閉じる
- Ctrl+x 1:他のすべてのウィンドウを閉じて、現在のウィンドウだけを表示する。
他のウィンドウに移動
- Ctrl+x o:他のウィンドウにカーソルを移動する。
6. リージョン指定とマーク設定
Emacsでは、テキストの一部を選択するために「リージョン」という概念を使用する。以下がその方法である。
- 指定したい領域の一方の隅に目印をつけ、もう一方の隅にカーソルを移動させる。
- 目印をつけた場所とカーソルとの間が領域(リージョン)となる。Emacsでは目印を「マーク」と呼び、目印を設定することを「マークする」と呼ぶ。
- カーソルをマークする場所まで移動し、Ctrl+Spaceとタイプすることでマークが設定され、ミニバッファ(画面下部に表示される情報表示領域)に「Mark set」と表示される。
カーソル位置の文字すべてが領域として指定されるわけではなく、カーソルの四角形の左辺を基準として領域が指定される。この基準をポイントと呼び、リージョンはマークしたときのポイントから現在のカーソルのポイントまでとなる。
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:特に機能を持たないモード
- text-mode:通常の文章を編集するためのモード
- c-mode, c++-mode:C言語および、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
とタイプする。モードが設定されている場合は解除され、設定されていない場合は設定される。マイナーモードはメジャーモードと異なり、一つのバッファに複数設定できる。
マイナーモードには、以下のようなものがある(一部を抜粋):
- overwrite-mode:通常Emacsでは、カーソルの位置に文字を挿入する。上書きモードでは入力された文字は挿入されず上書きされる。
- auto-fill-mode:自動的に文章を一定の位置で改行する。自動整形モードを使うと行末を自動的に改行する。改行する桁はfill-column変数で指定した文字数である。
- line-number-mode:モードライン(画面最下行に表示されるEmacsの状態を示す行)に現在の行を表示する。