ソフトウェア設計及び演習2017
応用編
コンパイル
コンパイルの実行「M-x compile」
作成したプログラムのコンパイルはEmacsから実行すると便利です.
M-x compile
とタイプすると,ミニバッファに「Compile Command: 」と表示されます.ここに実行したいコマンドを入力するとコンパイルを実行できます. 今まではミニバッファに「gcc xxxx.c -o xxxx」のようなコマンドを入力していたと思いますが, Makefile が作られている場合は,ミニバッファ「make」などとタイプすればOKです.
エラー処理
Emacsからコンパイルする利点はコンパイルエラーを処理するときです. ショートカットキーを一度タイプするだけでエラー箇所へジャンプしてくれます.
M-g n | 次のエラーに対応する箇所へジャンプ(next-error)「C-x ` (バッククォート)」でも同じことができる. |
M-g p | 前のエラーに対応する箇所へジャンプ(previous-error) |
このコマンドを次々に実行して,エラー箇所をチェックすることができます.
バッファ,ウィンドウ,フレーム
バッファ
Emacsでファイルを編集するとき,ファイルを直接に編集するわけではありません. まずファイルをいったんバッファにコピーして,コピーしたものを編集します. 編集したコピーをファイルに保存すると,編集内容がファイルに反映されます. バッファに関する代表的な操作を3つ挙げます.
C-x b | 直前のバッファと切替える |
C-x C-b | バッファ一覧の表示 |
C-x k | 現在のバッファを閉じる |
ウィンドウ
バッファを表示している部分のことをウィンドウと言います. 要は,テキストを編集する部分のことです. ウィンドウに関する代表的な操作を下に挙げます.
C-x 2 | 現在のウィンドウを上下に2分割します. |
C-x 3 | 現在のウィンドウを左右に2分割します. |
C-x o | 別のウィンドウにカーソルを移動します. |
C-x 0 | カーソルがあるウィンドウを消します. |
C-x 1 | カーソルがあるウィンドウを残して、他のウィンドウを消します. |
フレーム(講義では省略)
画面に表示されている emacs 全体のことをフレームと言います. フレームに関する便利なショートカットを以下にまとめます.
C-x 5 2 | 新しいフレームを作成して,現在のバッファを表示します. |
C-x 5 o | 他のフレームへ移動します. |
C-x 5 0 | 現在のフレームを削除します. |
C-x 5 f | 新しいフレームを作成して,そこで指定したファイルを開きます |
C-x 5 b | 新しいフレームを作成して,そこで指定したバッファを表示します. |
C-mode
モード
Emacsは,編集するファイルに応じて固有の「モード」があります. 例えば
- Cプログラムを編集するのはC mode
- テキストを編集するのはtext mode
- Makefileを編集するのはmakefile mode
これらのモード(メジャーモード)は,主にファイルの拡張子で決まります.
- 拡張子が c や h ならC mode
- 拡張子が txt ならtext mode
- ファイル名が Makefile や makefile なら makefile mode
それぞれのモードには,その種類のファイルを編集するための色々な機能が用意されています. 例えば C mode では
- 適切に字下げ(インデント)してくれる
- ファイル内を移動する便利なコマンド
などが用意されています.
タグって?
プログラムを作るとき,
- 「この関数の定義を見直したい」
- 「前に#defineした値を忘れた」
と思うことが度々あります.その度にファイルをさかのぼって定義を見直すのは結構面倒な作業になります. さらに複数のファイルを使ってプログラムを作っているときは「この関数を定義したファイルはどれだっけ?」ということになり,さらに面倒になります.
タグ(TAG)を使うと,こうした面倒から解消されます. マクロ,関数などがどのファイルにあるかという情報を,タグファイルというファイルに保存しておき,Emacsから必要なときに瞬時に参照したい情報を見ることができるようになります.
タグテーブルの作成
タグテーブルとは,複数のファイルで構成されるプログラムが,どのように各ファイルに分割されているのか記述したものです. これは,プログラムを構成するファイル名,そのファイルに入っている関数の名前やファイル内の位置の一覧です.
ソースファイルがあるディレクトリで,次のコマンドを実行します.
% etags ファイル名
プログラムをたくさんのファイルを使って作成している場合は
% etags *.h *.c
実行すると,そのディレクトリに TAGS というファイルができます。 このファイルには,プログラムで定義されている関数や変数の名前などが記録されています。
タグの機能を使ってみる.
以下の2つの基本機能を使ってみよう.はじめてタグの機能を使うときは,タグテーブルの場所を聞かれますが, 先ほど作ったファイル(TAGS)を指定すればOKです.通常は,デフォルトのままでOKです.(つまり,そのままリターンを押します).
M-. | 指定した関数を定義したファイルを開き,関数を定義している場所を表示(ジャンプ) |
M-* | ジャンプ後,元の位置に戻る |
他にも,いくつかの機能を書いておきます.
C-x 4 . | 指定した関数を定義したファイルを別ウィンドウに開き,関数を定義している場所を表示 |
C-x 5 . | 指定した関数を別フレームで開く |
M-x tags-query-replace | 指定した正規表現を,別に指定したものに置き換え |
最終更新日:2017/06/02 11:11:42