Emacsを制するものは,本講義を制します.便利な emacs を使いこなしすことで効率良くプログラミングしましょう! !!!! 準備 Emacsを使っているとき''基本的にマウス使いません''.キーボードから手をマウスへ移動するということは時間を浪費しているのです.できる限りキーボード操作を快適にするためにもキーボード配置を自分の使いやすいものにしておきましょう. !!! Control キーと Caps lock キーの入れ替え Control キーとCaps lock キーを入れ替えておくと,ショートカットキーをタイプするときに非常に''便利''です. Unity を使っている人の場合は以下のようにして入れ替えができるみたいです. + 「Dashホーム」を開く + 検索ボックスに「キーボードレイアウト」とタイプ --> 「キーボードレイアウト」が出現するので開く + 「オプション」--> 「Ctrlキーの位置」--> 「Ctrl と Caps Lock を入れ替える」を選択 //他にも,~/.xmodmaprc というファイルに設定を書くという方法もあります. //※古い情報(2012年)なので要確認! //* emacs で ~/.xmodmaprc を開き,以下を書く. //8< // remove Lock = Caps_Lock // remove Control = Control_L // keysym Control_L = Caps_Lock // keysym Caps_Lock = Control_L // add Lock = Caps_Lock // add Control = Control_L //>8 //* 設定を有効にするために,以下のコマンドを実行 // % xmodmap ~/.xmodmaprc //コマンドを打っても設定が有効にならない場合がある??? //再起動したら設定が反映されたことがありました(山中の経験談). !!! メタキーについて メタキーを使った操作は,''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(開きかっこから対応する閉じかっこへジャンプ)のようなコマンドが使いやすくなります. !!!! 基本操作のショートカットキー マウスを使わず,キーボード操作のみで何かをしようと思ったとき,ショートカットキーは必要不可欠です. ショートカットキーを使いこなして 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-SPC(または,C-@)をタイプすると、ポイントに「マーク」が付きます(画面には何も表示されません). * 「マーク」からポイントまでの範囲を「リージョン」といいます. !!! リージョンを使った操作 !! 重要なもの || C-w | リージョンの中にある文字を全て削除し,キルリングに入れる(リージョン内を切り取りしたと思うと分かりやすいかも) || M-w | リージョンの中にある文字をキルリングに入れる.文字は削除されない(リージョン内をコピーしたと思えば分かりやすいかも) || C-y| キルリング内の文字列の呼出し(貼付けと思えばいいかも) ||M-;| リージョンのコメントアウトやコメント解除を行う || M-x comment-region | リージョンをコメントアウトする || C-u M-x comment-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を開く」→「C-x C-f sample.txt」として、適当な文字をたくさん書く. ** 適当な位置で「C-SPC」→カーソルを別の位置に動かしてから「C-w」.リージョンの文字が削除されることを確認. ** その後「C-y」として,さきほど削除した文字がコピーされることを確認. ** また別の位置で「C-SPC」→カーソルを動かす→「M-w」。今度は文字が消えない. ** 再び「C-y」としたときに,先ほどのリージョン内の文字がコピーされることを確認. * プログラムの整形 ** [region.c|http://www.kono.cis.iwate-u.ac.jp/~yamanaka/Emacs/region.c]をダウンロード. ** ダウンロードしたファイルをEmacsで開く. ** C-x h とした後 C-M-\ で全体がきれいにインデントされることを確認. !!!! ウィンドウの分割 ウィンドウを使いこなして 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 | 現在のバッファを閉じる //!!!! ディレクトリの編集 --> Diredモード // //Diredモードを使いこなして Emacs初心者を卒業しよう. // //dired(DIRectory EDitor)モードを使うと Emacs上でファイルやディレクトリを操作することができます. //わざわざターミナルを開く必要がないのでとても便利です, //#読み方は「ダイアード」と言ったり「ディレド」と言ったりするそうな. // //下のキーをタイプすると,,, //8< //C-x d # diredモードに入るためのキー //>8 //ディレクトリ名を聞かれるので(デフォルトはカレントディレクトリ)見たいディレクトリをタイプする. //すると,指定したディレクトリを ls -l で見たときの画面が表示されます. // //!!! Diredモードで使えるコマンド // //diredモードでは、ファイルを操作するためのコマンド(cpやmvやrmなど)を使うことができます.操作方法はmewでメールを読むときと良く似ています. // //|| f | カーソル位置のファイルを開く or カーソル位置のディレクトリに入る //|| C | ファイルをコピーする(cp) //|| R | ファイルの移動、名前の変更(mv) //|| d | ファイルに削除マーク'D'を付ける.Dマークが付いたファイルは'x'を押すと消える.'u' で'D'マークをキャンセルできます //|| ~ | ~(チルダ)の付いたバックアップファイルに削除マークを付ける.'x'を押すとそれらのファイルが削除される. //|| M | ファイルのパーミッションを変更(chmod) // //!!! 練習 // //* 「C-x d」と入力.ディレクトリ名を聞かれるのでそのままリターン. //* 表示されたファイル一覧の中からファイルを一つを選び、そのファイル名の上にカーソルをおいて「C(大文字)」を押す. //* ファイル名を聞かれるので,適当なファイル名を入力.''すでにそのディレクトリにあるファイル名を違う名前を入力すること.'' //* 選んだファイルがコピーされることを確認. !!!! 検索と置換 とても便利な機能です.ぜひ覚えてください !!! 検索 || 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 テクニックバイブル (るびきち 著)