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:kill ring(削除したテキストを一時的に保存する領域)から最新のテキストをカーソル位置に挿入します.
マーク設定
- Ctrl+Space:現在のカーソル位置にマークを設定します.この機能は選択範囲(リージョン)を指定する際に便利です.
元に戻すとやり直し
- Ctrl+/:直前の操作を取り消します(アンドゥ).必要に応じて操作を繰り返し取り消すことができます.
2. ファイル操作
ファイルの読み込みや保存はEmacsの重要な機能です.
ファイルを開く
- Ctrl+x Ctrl+f:ファイルを開きます.Emacsは自動的に文字エンコーディングを判定します.
ファイルを保存
- Ctrl+x Ctrl+s:現在のバッファ(編集中のファイルの内容を一時的に保存する領域)をUTF-8で保存します.
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 Ctrl+o:他のウィンドウにカーソルを移動します.
6. リージョン指定とマーク設定
Emacsでは,テキストの一部を選択するために「リージョン」という概念を使用します.以下がその方法です.
- 指定したい領域の一方の隅に目印をつけ,もう一方の隅にカーソルを移動させます.
- 目印をつけた場所とカーソルとの間が領域(リージョン)です.Emacsでは目印を「マーク」と呼び,目印を設定することを「マークする」といいます.
- カーソルをマークする場所まで移動し,C-Spaceとタイプすることでマークが設定され,ミニバッファ(画面下部に表示される情報表示領域)に「Mark set」と表示されます.
カーソル位置の文字全てが領域として指定されるわけではなく,カーソルの四角形の左辺を基準として領域が指定されます.この基準をポイントと呼び,リージョンはマークしたときのポイントから現在のカーソルのポイントまでになります.
7. テキスト削除
Emacsにはdeleteとkillという2つのコマンドがあります.deleteは文字を消去するのみですが,killは切り取りの意味合いがあります.killで取り除いたテキストはkill-ringという領域に保存されます.kill-ringに保存されたテキストは,別のコマンドで取り出すことができますが,deleteで消去されたテキストはundoを使わない限り復活しません.
領域の削除
リージョンが指定された状態でC-wをタイプすると,指定された領域が削除されます.C-wは指定領域を削除するコマンド(kill-region)です.
8. 複写
領域をバッファから削除せずにキルリングへ格納するにはM-wを使用します(kill-ring-save).このコマンドもマークとカーソルで領域を指定します.また,マウスの左ボタンドラッグでも複写できます.ドラッグした範囲の色が変わります.
9. 貼り付け
キルリングに取り込まれたテキストを取り出すにはヤンク(yank)を使います.ヤンクコマンドはC-yに割り当てられています.C-yをタイプするとキルリングに格納されているテキストをカーソル位置に挿入します.
さらに,その前にキルリングに記憶されたテキストも順次取り出すことができます.古い削除テキストを取り出すには,C-yコマンドの直後にM-yをタイプします(yank-pop).M-yを押すたびに,取り出されるテキストが順々に古い削除テキストに入れ替わります.
また,マウスの中ボタンクリックでマウスカーソルがある位置にテキストを挿入することも可能です.
10. 取り消し
間違えて削除をしてしまった場合などに,前の状態に戻りたいことがあります.C-/を入力すると,直前の操作を取り消すことができます.これをアンドゥ(操作の取り消し)といいます.アンドゥは何度も繰り返すことができます(繰り返すことができる回数に制限はあります).
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の状態を示す行)に現在の行を表示します.