ソフトウェア設計及び演習2013
基礎編
便利な Emacs を使いこなして Emacs初心者を卒業しよう!
準備
Control キーと Caps lock キーの入れ替え
Control キーとCaps lock キーを入れ替えておくと,ショートカットキーをタイプするときに非常に便利です. Unity を使っている人の場合は以下のようにして入れ替えができるみたいです.
- 「Dashホーム」を開く
- 検索ボックスに「キーボードレイアウト」とタイプ --> 「キーボードレイアウト」が出現するので開く
- 「オプション」--> 「Ctrlキーの位置」--> 「Ctrl と Caps Lock を入れ替える」を選択
他にも,~/.xmodmaprc というファイルに設定を書くという方法もあります. ※古い情報(2012年)なので要確認!
- emacs で ~/.xmodmaprc を開き,以下を書く.
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
- 設定を有効にするために,以下のコマンドを実行 % 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 の終了
C-x C-c
カーソルの移動
カーソル(別名「ポイント」)を移動するためのショートカットキーを覚えよう.
ショートカットキー | 意味 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 (カーソルの直前の文字を削除)
そのまま,
Backspace
です.
ただし,自分のホームディレクトリにある「.emacs」というファイルに以下を追加すると,
(global-set-key "\C-h" 'delete-backward-char)
Backspaceが
C-h
で可能になります(個人的にはオススメ).
マークに関する操作
キー | 説明 |
C-x C-x | マークとポイントを入れ換えます。最後にマークした位置にカーソルが移動し,ポイントにマークが付く.「C-x C-x」を何度も押せば、マークとポイントを行ったり来たりできる |
C-u C-<SPC> | カーソルが,これまで付けたマークをさかのぼって移動する. |
覚えておくと便利
C-M-\ または C-x <tab> | リージョン内の全ての行をインデント(字下げ)する. |
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をダウンロード.
- ダウンロードしたファイルを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 | 現在のバッファを閉じる |
検索と置換
とても便利な機能です.ぜひ覚えてください
置換
関数名を変更せざるおえなくなったときなどに便利.
M-% | クエリ付きで文字列を置き換え |
M-x replace-string | クエリなしで文字列を置き換え(実行するときは要確認!!) |
かっこ
プログラムを書いているうちに,たくさんの括弧が出てきて対応を把握するのが困難になります. そんなときに使うと便利.
「開きかっこ」─「閉じかっこ」間の移動
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 テクニックバイブル (るびきち 著)
最終更新日:2013/11/14 08:49:37