ソフトウェア設計及び演習2013

基礎編

便利な Emacs を使いこなして Emacs初心者を卒業しよう!

準備

Control キーと Caps lock キーの入れ替え

Control キーとCaps lock キーを入れ替えておくと,ショートカットキーをタイプするときに非常に便利です. Unity を使っている人の場合は以下のようにして入れ替えができるみたいです.

  1. 「Dashホーム」を開く
  2. 検索ボックスに「キーボードレイアウト」とタイプ --> 「キーボードレイアウト」が出現するので開く
  3. 「オプション」--> 「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の起動

% emacs 'ファイル名'

上書き保存

C-x C-s     
+ Control を押しながら x を押し,(Control を離さずそのままの状態で) s を押す

※正確には,現在のバッファをファイルに保存します.

別名で保存

C-x C-w

とタイプすると,カーソルがミニバッファ内に移動するので, そこでファイル名をタイプしてリターン.

別のファイルを開く

C-x C-f

とタイプすると,カーソルがミニバッファに移動するので, そこで開きたいファイル名をタイプしてリターン.

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

で可能になります(個人的にはオススメ).

Delete (カーソル上の文字を削除します.)

C-d

1行削除

C-k

おまけ ---> 操作を取り消す(undo)

C-/

または

C-x u

マークとリージョン

  • バッファ上で,カーソルがある位置のことを「ポイント」といいます.
  • バッファ上で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-<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 現在のバッファを閉じる

検索と置換

とても便利な機能です.ぜひ覚えてください

検索

C-s インクリメンタル・サーチ(検索文字列を下方向に検索)
C-r デクリメンタル・サーチ(検索文字列を上方向に検索)

置換

関数名を変更せざるおえなくなったときなどに便利.

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