初版作成 1990.2.7
最終更新 2024.04.01
$ emacs↓ ↓ は enter キーを押す で emacs が起動する。 emacs は起動した時点で既に *scratch* *Messages* *Buffer List* という 3 つのファイルをオープンしている。 emacs を起動した時点では、上述のファイルのうち *scratch*(雑記帳の意 メモなど を置く場所 セーブされない)を選択しているところからスタートする。emacs では、 オープンしているファイルのことをバッファと呼ぶ。X Window 上で起動するときは $ emacs -nw↓ のように、no window モードで起動すると、 マウスを使わずにキーボードのみで操作できるので便利である。 C-z 子プロセスの実行。fg で戻る。 C-x C-c emacs の終了。 (注意!) C-z はコントロールキーを押しながら z キーを押すことを表し、 M-z は ESC キーを押した後、z キーを押すことを表す。
C-g 取り消し C-x u アンドゥ (C-u にカスタマイズする)
emacs ではファイル名の読み込みやバッファの選択の時などに、 画面の一番下の方にミニバッファをオープンして、その中で指定する。 TAB (あるいは C-i) を押すと、補完してくれる。複数の候補がある場合は候補のリストを 別のウィンドウに表示する。 例) test.f というファイルを選択したいと仮定する。 1) ミニバッファを開いて TAB を 2 回押す。現在のファイルの一覧が表示される。 2) t TAB と押す。t で始まるファイル名が 1 つしかないとき最後まで補完する。 3) 候補が 2 つ以上ある時は途中まで補完するので、その次の 1 字を入れて更に TAB を押す。 ミニバッファを 1 回でも使ったコマンドは、その履歴が保管される。 C-x ESC ESC 最近のミニバッファのコマンドを再実行する。置換などのコマンドを再実 行するときなどに便利である。 ESC p 1 つ前のミニバッファコマンドに移る ESC n 1 つ後のミニバッファコマンドに移る
emacs のコマンドにはすべて数引数を与えることができる。 引数の数だけそのコマンドを実行する。 例) ウィンドーの大きさを 8 行大きくする ESC 8 C-x ^ 注意:最後の^はコントロールキーの意味ではない C-u 4 倍する意味を持つ 例) C-u C-n カーソルを 4 行下げる。 C-u C-u C-n カーソルを 16 行下げる。 私は C-u をカスタマイズするので 4 倍する使い方はしない。
C-x C-f 新しいファイルをオープンして今のウィンドーに表示する。現在編集している ファイルは画面から消えるがクローズされるわけではない。 既にオープンされているファイルを指定したときは、そのバッファを選択する。 C-x C-v カレントバッファをクローズして新しいファイルをオープンする。 C-x C-s カレントバッファをセーブする。 C-x C-w ファイル名を指定してカレントバッファをセーブする。 C-x k カレントバッファをクローズする。 C-x b 編集するバッファを変更する C-x C-b 編集するバッファを変更する *Buffer List* というバッファに移動する C-x d ディレクトリエディタを起動する。 開くファイル名には * を入れるとよい .emacs で (auto-compression-mode t) としておくと gz bz2 ファイルも編集できる。 ファイル選択画面におけるキー操作 p 1 行上へ n 1 行下へ f そのファイルを選択
C-p ↑ C-a C-b ← → C-f C-e ↓ C-n C-d 1 字デリート DEL でも同じ C-k 行末まで削除。従って C-a C-k で 1 行削除。 C-v スクロールダウン ESC v スクロールアップ C-l カーソル位置を画面の中央へ(画面も移動) ESC r カーソル位置を画面の中央へ(画面は静止) ESC < 文頭へジャンプ ESC > 文末へジャンプ ESC x goto-line 指定した行へジャンプ
C-x 2 横分割 C-x 3 縦分割 C-x 0 いまカーソルのあるウィンドーを閉じる C-x 1 いまカーソルのあるウィンドー以外の全てのウィンドーを閉じる C-x o ウィンドー間のジャンプ C-x ^ ウィンドーの大きさを縦方向に拡大する。通常、数引数をつけて使用する。 例) ESC 9 ^x ^
カット&ペーストに関するバッファは 2 系統ある。1 つは削除リングを使うもので C-w 等によって操作する。 削除リングは、はじめと終わりがつながっている一種のスタックで、 Windows のクリップボードに相当する。 もう 1 つはレジスタを使うもので C-x r s a 等のように操作する。 C-SPC マークの設定(C-SPC を 2 回押すと transient-mark-mode が nil の場合でも一時的に enabled になる) C-x C-x マークとカーソルの入れ替え C-w リージョン(マークとカーソルの間)をカットして削除リングへコピー ESC w リージョンを削除リングへコピー C-y ペースト(何回でもできる) ESC y 削除リングを 1 つポップしてペースト C-x r s a a というレジスタへリージョンをコピー C-x r i a a というレジスタからカーソル位置へコピー
C-s 順方向へ検索 C-r 逆方向へ検索 C-s C-s 前回行った検索の再実行 検索文字列を入れる時点において C-w カーソル位置から 1 単語を、検索文字列として読み込む。 C-y カーソル位置から行末までを、検索文字列として読み込む。 1 つ候補が見つかった時点において RET 検索を中止し、その位置へカーソルを移す。 検索開始時にカーソルがあった地点がマーキングされるので、 C-x C-x で前のカーソル位置へ戻れる。 C-s 次の候補(文末へ) C-r 次の候補(文頭へ) C-g 検索を中止し、カーソルを検索開始時の位置へ戻す。 カーソル移動 or C-SPC 検索を中止し、カーソルをその場所にとどめる C-s ↓ 日本語の検索 ↓ は Enter キーを表す ESC % 確認しながら置換(日本語可)。 ミニバッファを使うので、C-x ESC ESC で再実行できる。 1 つ置換候補が見つかって時点において y 置換して次に進む n 置換せずに次に進む q 置換を終了し、カーソルをその位置へ移す ESC p 検索リングの 1 つ前の単語 ESC n 検索リングの 1 つ後の単語 ESC : ( setq case-fold-search nil ) 大文字と小文字を区別 ESC : ( setq case-fold-search t ) 元に戻す
. 任意の一文字 * 0 回以上の繰り返し + 1 回以上の繰り返し ^ 行頭 $ 行末 \ メタ文字の機能の抑制 あるいは 特殊構成 () グループ化 \< 単語の先頭 \> 単語の末尾 \b 単語の先頭あるいは末尾 \B 単語の先頭あるいは末尾以外 \(ab\)+ ab の 1 回以上の繰り返し ab\|cd ab か cd かどちらか \\\(sub\)*section \section or \subsection or \subsubsection or ..... \<the\> 単語としての the ( thema にはマッチしない ) \blicense?\b lisence あるいは lisences にマッチする \bcop\(y\|ies\)\b copy あるいは copies にマッチ \Bsign\B 部分文字列として sign を含む単語
以下のことを仮定する。 ・コンパイル方法は makefile に書いてある ・プログラムを作成して今からコンパイルする状態である。 1) C-x C-s でいま編集しているバッファをセーブする。 2) ESC x compile↓ と打つ。通常は何らかのキーにカスタマイズしておく。 画面の下の方に make -k と表示されるのでリターンを押す。 コンパイルが開始され、エラーメッセージが *compilation* というバッファに蓄えられ、 他のウィンドーで *compilation* のバッファを表示する。 つまり、画面にはデバッグ中のプログラムとエラーメッセージがマルチ ウィンドーで表示されることになる。 3) コンパイルの開始後、 C-x ` を実行すると、最初のエラーメッセージのある行に カーソルが移動する。対応するエラーメッセージは、*compilarion* が表示されている ウィンドーの最上部へスクロールする。この操作はコンパイルの途中でも実行できる。 4) 続けて C-x ` を実行すると次のエラー箇所にカーソルが移動する。 5) C-u C-x ` でもう 1 度最初のエラーに戻る。 (setq compile-command "gmake -w -k") とするとコンパイルコマンドを変更することが出来る。 .emacs の中に記述するか、ESC x set-variable で設定する。
emacs にはいくつかのモードがある。拡張子に .f の付いたファイルを編集すると きは自動的にフォートランモードになる。そうでない時は、 ESC x fortran-mode ↓ と打てばフォートランモードに入る。フォートランモードでの便利なコマンドについて 解説する。 ESC C-a サブルーチンの先頭に移動 ESC C-e サブルーチンの最後に移動 C-c ; リージョンの全ての行をコメント文にする。 引数があれば(どんな引数でも良い)元に戻す。 例)ESC 1 C-c ; C-c C-w 72 桁目に線を引く
emacs では全てのコマンドに名前が付いている。例えば C-d は 1 文字削除するコマン ドだが、これには (delete-char) という名前が付いている。これらのコマンドは全て 名前によって実行することがきる。 ESC x コマンド名 ↓ と打てば良い。
ESC x help ↓ と打つと、ヘルプを選ぶ画面が開く。 その画面において、たとえば b キーバインドと対応するコマンドのリストを表示する
ESC x shell ↓ と打つと、*shell* というバッファが作成され、その中で シェルが実行される。シェル上で実行したコマンドの結果 を取り込む場合に便利である。 ただし、シェルの履歴機能は使えなくなるので、 C-z と使い分けるとよい。 シェルの履歴機能を使えるようにする方法がどこかのサイトに 書いてあったのを見たが忘れてしまった。 ESC ! でも外部コマンドの実行ができる。
ESC x describe-variable ↓ tab-width ↓ ESC x set-variable ↓ tab-width ↓ 4 ↓
式の実行 ESC : ファイルの実行 ESC x load-file
既にテキストファイルの 1 行の文字数を揃えるには以下のように操作する。 例えば、1 行を 80 文字にして改行するには ESC 80 C-x f として fill-column という変数に 80 を設定した後、 ESC g を実行すると、C-SPC でマークした場所とカーソルの間のリージョンを 1 行 80 桁に揃える。 変数に値を設定するときは ESC x set-variable↓ Set variable: fill-column↓ Set fill-column to value: 80↓ とするのが一番基本的な方法である。
C-x ( キーボードマクロの登録開始 C-x ) 登録終了 C-x e 登録したマクロの実行 登録したマクロに名前をつける (1) M-x name-last-kbd-macro 名前を付ける (2) M-x macro-name 実行 キーに割り当てる (1) M-x insert-kbd-macro 指定した名前のマクロの内容をカーソル位置に書き出す (2) .emacs にコピーし、以下のように記述する (fset 'my-macro "\C-aabc\C-a\C-n") (global-set-key "\C-j\C-a" 'my-macro) テンポラリに設定したい場合は ESC : で (global-set-key "\C-j\C-a" 'my-macro) を入れて実行する。
$ etags *.[hcfFx] 前後を検索するので関数がファイルを 超えて移動しない限り、再生成の必要はない M-. ( find-tag ) RET RET タグ位置へジャンプ C-u M-. 次のタグ位置へジャンプ ESC C-. ( find-tag-regrexp )
emacs ではキーのカスタマイズをはじめとして、様々なカスタマイズが可能である。 起動時に読み込む .emacs ファイルにカスタマイズする項目を書き込む。 カスタマイズについて ここ で述べる。 私の .emacs (漢字コードは EUC)
変数の設定 (setq 変数名 値) 値が数値のときはそのまま書き、 文字列の場合は " で括る。 条件分岐 (if condition then-form else-forms) 文は一つしか書けないので、progn と組み合わせる (if window-system (progn (set-background-color "navy") (set-forground-color "white") ) ) switch 文 (cond (condition1 forms1) (condition2 forms2) ............ (t forms) )
編集できる範囲を限定する。余計な場所を変更しないで済む。 C-x n n マークとカーソル位置までのみ表示 C-x n w 元に戻す