Emacsを制するものは,本講義を制します.便利な emacs を使いこなしすことで効率良くプログラミングしましょう! !!!! 準備 前回の講義で使った「cairo_sample」のサンプルプログラムを使って解説します. まだダウンロードしていない人は,svnでダウンロードしておきましょう. ! 実行手順 8< #svnから持ってくる(実行した直下にcairo_sampleディレクトリができる) svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/ #持ってきたディレクトリに移動 cd cairo_sample #makeでコンパイル make #実行 ./cairo_sample >8 !!!! 環境を整える Emacsを使っているとき基本的にはマウス使わず「ショートカットキー」を多用します.キーボードから手をマウスへ移動するということは時間の浪費なのです.できる限りキーボード操作を快適にするためにもキーボード配置を自分の使いやすいものにしておきましょう. !!! Control キーと Caps lock キーの入れ替え Control キーとCaps lock キーを入れ替えておくと,ショートカットキーをタイプするときに非常に''便利''です. Unity を使っている人の場合は以下のようにして入れ替えができます. + デスクトップ画面左上の「Dashホーム」を開く + 検索ボックスに「キーボードレイアウト」とタイプ --> 「キーボードレイアウト」が出現するので開く + 「オプション」--> 「Ctrlキーの位置」--> 「Ctrl と Caps Lock を入れ替える」を選択 !!! メタキーについて メタキーを使った操作は,''Escキー''を使う他に''Altキー''を使っても行うことができます. その他にも,''C-['' 押すとEscキーを押したものとして扱ってくれます(個人的にはこっちがオススメ). * 例:Alt-x(または C-[ x)とタイプするとミニバッファ(Emacsの一番下)にM-xと表示される(''C-g'' でキャンセルしましょう). * 例:C-v と押すと1画面進む.Alt-vと押すと1画面戻る. これを覚えておくと M-f(1単語進む) とか M-v(1画面戻る) とか C-M-f(開きかっこから対応する閉じかっこへジャンプ)のようなコマンドが使いやすくなります. !!! 困ったら C-g でキャンセル 「C-g」はキャンセルのショートカットキーです.「困ったらC-g」と覚えておきましょう. !!!! 基本操作のショートカットキー マウスを使わず,キーボード操作のみで何かをしようと思ったとき,ショートカットキーは必要不可欠です. ショートカットキーを使いこなして Emacs初心者を卒業しよう! !!! Emacsの起動 8< % emacs 'ファイル名' >8 !!! 上書き保存 8< C-x C-s + Control を押しながら x を押し,(Control を離さずそのままの状態で) s を押す >8 ※正確には,現在のバッファをファイルに保存します. !!! 別名で保存 8< C-x C-w >8 とタイプすると,カーソルがミニバッファ内に移動するので, そこでファイル名をタイプしてリターン. !!! 別のファイルを開く 8< C-x C-f >8 とタイプすると,カーソルがミニバッファに移動するので, そこで開きたいファイル名をタイプしてリターン. !!! Emacs の終了 8< C-x C-c >8 !!!! カーソルの移動 カーソル(別名「ポイント」)を移動するためのショートカットキーを覚えよう. ((img cursor.png)) ||ショートカットキー|意味 in English|意味 in Japanese| 重要度 ||C-f|forward-char|カーソルを1文字分右に移動する|*** ||C-b|backward-char|カーソルを1文字分左に移動する|*** ||C-n|next-line|カーソルを1行下に移動する|*** ||C-p|previous-line|カーソルを1行上に移動する|*** ||C-a|beginning-of-line|現在の行の先頭に移動する|** ||C-e|end-of-line|現在の行の最後に移動する|** ||C-v|scroll-up|1画面後ろに移動する|** ||M-v|scroll-down|1画面前に移動する|** ||M->|end-of-buffer|バッファの最後に移動する|* ||M-<|beginning-of-buffer|バッファの先頭に移動する|* ||M-x goto-line RET n RET|goto-line n|n行目に移動する|* ここで,''RET'' はリターンキーをタイプすることを意味します. !!!! 文字の削除 !!! Backspace (カーソルの直前の文字を削除) そのまま, 8< Backspace >8 です. ただし,自分のホームディレクトリにある「.emacs」というファイルに以下を追加すると, 8< (global-set-key "\C-h" 'delete-backward-char) >8 Backspaceが 8< C-h >8 で可能になります(個人的にはオススメ). !!! Delete (カーソル上の文字を削除します.) 8< C-d >8 !! 1行削除 8< C-k >8 !!!! 操作の取り消し(undo) 「うっかり消したくないところを消してしまった!」というときに便利です. 文字を消すショートカットキーと合わせて覚えておきましょう. 8< C-/ >8 または 8< C-x u >8 !!!! マークとリージョン * バッファ上で,カーソルがある位置のことを「ポイント」といいます. * バッファ上でC-@をタイプすると、ポイントに「マーク」が付きます(画面には何も表示されません). * 「マーク」からポイントまでの範囲を「リージョン」といいます. !!! リージョンを使った操作 !! 重要なもの || C-w | リージョンの中にある文字を全て削除し,キルリングに入れる(リージョン内を「切り取り」している) || M-w | リージョンの中にある文字をキルリングに入れる.文字は削除されない(リージョン内を「コピー」している) || C-y| キルリング内の文字列の呼出し(「貼付け」している) ||M-;| リージョンのコメントアウトやコメント解除を行う || M-x comment-region | リージョンをコメントアウトする || M-x uncomment-region | リージョンのコメントを外す !!! マークに関する操作 || キー | 説明 || C-x C-x | マークとポイントを入れ換えます。最後にマークした位置にカーソルが移動し,ポイントにマークが付く.「C-x C-x」を何度も押せば、マークとポイントを行ったり来たりできる || C-u C- | カーソルが,これまで付けたマークをさかのぼって移動する. !!! 覚えておくと便利 || C-M-\ または C-x | リージョン内の全ての行をインデント(字下げ)する. || C-x h | バッファ全体をリージョンにできます。「C-x h → C-M-\」でバッファ全体をインデント. || C-x C-u | リージョン内の文字を全て大文字にする || C-x C-l | リージョン内の文字を全て小文字にする !!!! ウィンドウの分割 ウィンドウを使いこなして Emacs初心者を卒業しよう. Emacsでは,文字を編集する部分を「ウィンドウ」といい,Emacs全体を枠のことを「フレーム」といいます. || C-x 2 | 現在のウィンドウを上下に2分割します || C-x 3 | 現在のウィンドウを左右に2分割します || C-x o | 別のウィンドウにカーソルを移動します || C-x 0 | カーソルがあるウィンドウを消します || C-x 1 | カーソルがあるウィンドウを残して、他のウィンドウを消します。 !!!! バッファ切替え || C-x b | 直前のバッファと切替える || C-x C-b | バッファ一覧の表示 || C-x k | 現在のバッファを閉じる !!!! 検索と置換 とても便利な機能です.ぜひ覚えてください !!! 検索 || C-s | インクリメンタル・サーチ(検索文字列を下方向に検索) || C-r | デクリメンタル・サーチ(検索文字列を上方向に検索) !!! 置換 変数名を変更せざるおえなくなったときなどに便利. || M-% | クエリ付きで文字列を置き換え || M-x replace-string | クエリなしで文字列を置き換え(実行するときは要確認!!) //!! Font-Lock // //.emacs に以下のように書いておくと、ソースコードに色が付きます。 // //{{{ //(global-font-lock-mode t) //}}} // //自分の好みの色に変更したいときは、相談してください。 !!!! かっこ プログラムを書いているうちに,たくさんの括弧が出てきて対応を把握するのが困難になります. そんなときに使うと便利. !!! 「開きかっこ」─「閉じかっこ」間の移動 || C-M-f | 「開きかっこ」('('、'{'、'['など)の上にカーソルを置いて''C-M-f''とすると、対応する「閉じかっこ」にカーソルが飛びます。 || C-M-b | 「閉じかっこ」直後にカーソルを置いて使うと、対応する「開きかっこ」に飛びます。 !!! かっこ間の移動 以下のコマンドで「かっこグループ」を単位とした移動ができます。 || C-M-n | 同じレベルにある「かっこグループ」を進む || C-M-p | 同じレベルにある「かっこグループ」を戻る || C-M-u | 一つ上のレベルのグループに上がる || C-M-d | 一つ下のレベルのグループに下がる(ubuntuのショートカットと重複してしまってるかもしれない.「デスクトップの表示」が動作してしまうかも.) !!!! 書籍の紹介 * 入門 GNU Emacs (D. Cameron, J. Elliott, M. Loy, E. Raymond, B. Rosenblatt 著, 半田剣一,宮下尚,新井貴之,鈴木和也 訳) * Emacs テクニックバイブル (るびきち 著)