この記事は3年以上前に書かれた記事です。情報が古い可能性があります。
最近 Emacs を使い始めたのだけど、操作方法がいろいろ独特なので、備忘として。
Emacs とは
UNIX系OSの定番テキストエディタ。「イーマックス」と読む。組み込みコマンドの多さ、様々な言語のコンパイラ連携など機能が豊富で、開発環境として優れている(とのこと)。最近はWindows版もあるよ。
コマンドの意味
- Ctrl キーとのトグルを “C-” と表記する。
- Alt キーとのトグルを “M-” と表記する。(Meta キーというらしい)
Ctrl キーを押しながら “x” を押す、という場合は “C-x” と表記する。
Ctrl を押しながら “x” 続けて トグルなしで “u” という場合は “C-x u” と表記する。
Ctrl を押しながら “x” 続けて Ctrl を押しながら “c” という場合は “C-x C-c” と表記する。
Tera Term などのターミナルでリモートでやる場合、Alt キーで Meta キーの送信をするように設定しておくと良い。キーボードの設定あたりにそういうのがあるはず。
基本
コマンド | 説明 |
C-x C-f (ファイル名) | ファイルを開く |
C-x C-s | 上書き保存 |
C-x C-w(ファイル名) | 名前を付けて保存 |
C-x C-c | 保存して終了 |
C-x u | 元に戻す |
C-g | コマンドのキャンセル |
カーソル移動
コマンド | 説明 |
C-f | 1文字右へ移動 |
C-b | 1文字左へ移動 |
C-p | 1行上へ移動 |
C-n | 1行下へ移動 |
C-a | 行頭へ移動 |
C-e | 行末へ移動 |
C-v | 次のページへ移動 |
M-v | 前のページへ移動 |
M-a | 文頭へ移動 |
M-e | 文末へ移動 |
M-> | 文頭へ移動(現在位置を記憶) |
M-< | 文末へ移動(現在位置を記憶) |
C-x L | 指定行へ移動 |
編集
コマンド | 説明 |
C-SPACE | 選択開始 |
M-w | コピー(選択範囲) |
C-w | 切り取り(選択範囲) |
C-y | 貼り付け |
C-d | 1文字削除 |
BS,Del | 1文字削除(カーソル位置の左) |
C-x h | 全選択 |
ウィンドウ操作
Emacs は CUI なのに ウィンドウ という概念を持っている。さらに、バッファという概念もある。初学者はここをよく混乱する。
- ウィンドウというのは、今表示されている画面のこと。
- バッファというのは、今開いているファイルのこと。
コマンド | 説明 |
C-x C-b | バッファ一覧表示(開いてるファイル一覧ということ) |
C-x b | バッファ切り替え(ウィンドウに表示するファイルを切り替えるということ) |
C-x k | バッファを消す(開いてるファイルを閉じるということ) |
C-x 0 | 現在のウィンドウを閉じる(ファイルは閉じない) |
C-x 1 | 現在のウィンドウ以外を全て閉じる(ファイルは閉じない) |
C-x 2 | ウィンドウを上下に分割する |
C-x 3 | ウィンドウを左右に分割する |
C-x o | 開いている次のウィンドウを表示する |
検索
コマンド | 説明 |
C-s | 次を検索 |
C-r | 前を検索 |
M-% | 置換 |
タグジャンプ
C/C++ のプログラムをする際に便利な機能。
タグジャンプを利用するには、最初に TAGS ファイルをつくる。ソースファイルのあるディレクトリをカレントにして
$ etags *.[chCH]
とすると、C/C++ ソースファイルに対する TAGS が生成される。
サブディレクトリまで掘る場合は、
$ find ./ -name "*.[chCH]" | etags -
TAGS ができれば、そのディレクトリ下のソースファイルでタグジャンプが使える。
コマンド | 説明 |
M-. | カーソル位置の定義位置へジャンプ |
C-x 4 . | カーソル位置の定義位置へジャンプ(別ウィンドウが開く) |
C-x 5 . | カーソル位置の定義位置へジャンプ(別フレームが開く) |
M-* | ジャンプする前の位置へ戻る |
コンパイル
Emacs は、エディタ画面でコンパイルまでできる。ここが Emacs がタダのテキストエディタではなく、開発環境たる所以か。
M-x に続けて「compile」と打ち込むと、コマンドラインに「make -k」と表示される。
カレントディレクトリに Makefile があれば make が走る。ない場合は gcc (ファイル名) とでも指定すればコンパイルができる。
コンパイラが吐き出すメッセージも下ウィンドウに表示され、エラー行がある場合は、そのメッセージを選択して C-x で行ジャンプまでできる。
このへんはマクロやキーマップに登録しておくと良いかも。