入門GNU Emacs(9章)

compileとgrep

キーバインド 意味
M-x compile コンパイルを実行する
M-x grep ソースをgrepする
M-x grep-find 起点のディレクトリ以下のソースをgrepする
C-x ` 次のエラー or 検索結果に移動し、対応するソースを開き、該当行へ移動
M-n 次のエラー or 検索結果に移動する
M-p 前のエラー or 検索結果に移動する
C-c C-c 現在のエラー or 検索結果に対応するソースを開き、該当行へ移動
M-x compile

コンパイル実行コマンドの入力を求められる。何も入力しないと、make -k が実行される。
デフォルトのコマンドを変更したい場合は、
.emacs にて compile-command を設定する。
設定仕方は

(setq compile-command "コマンド")

M-n/M-p/C-c C-c

コンパイルおよび検索結果表示バッファに移動しないと使えない
C-c C-c の変わりに Enterを使えるので、あんまり使うことはないかなぁ

言語モード

pythonの言語モードには2種類あって、標準で使えるpython.elってやつはあまり評判が良くないらしい
python-mode.elってのが評判が良いらしい。

python-mode.elをダウンロードしてきて、ロードパスに配置して以下を.emacsに記述すると有効になる

(setq auto-mode-alist
      (cons '("\\.py$" . python-mode) auto-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)

また、コメント/インデントに関するキーバインドもあって、

キーバインド 意味
M-; コメントを挿入する
M-j コメントを次の行へ伸ばす
M-x comment-region 選択した範囲をコメントアウト
C-j*1 改行後にインデントする
C-M-\ 選択した範囲をインデントする
C-x h C-M-\ ファイル全体をインデントする

etags

ディレクトリ中の書くファイルの関数名のリストとファイル内のどこで関数が定義されているかのテーブルを使って関数を検索できるようにする。

このテーブルを作るのがetagsコマンド。
pythonモジュールのテーブルを作るには、

find . -name "*.py" -print | etags -a - 

テーブルを作った後は、emacs にテーブルを理解させる

M-x visit-tags-table Enter

一端テーブルを作った後は、以下のキーバインドで検索できる

キーバインド 意味
M-. 関数名をテーブルから検索し、該当する先頭ファイルに移る
M-, 一端検索したあと、別のファイルに移って検索する

関数名以外を検索することも可能で、

キーバインド 意味
M-x tags-search Enter 文字列をテーブルから検索し、該当する先頭ファイルに移る
参考サイト

PythonMode@紹介マニアMoinMoin
PythonProgrammingInEmacs@EmacsWiki

入門 GNU Emacs 第3版

入門 GNU Emacs 第3版

*1:python-mode.elの場合Enterで自動的にインデントされる