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

基礎編

Emacsを制するものは,本講義を制します.便利な emacs を使いこなしすことで効率良くプログラミングしましょう!

準備

前回の講義で使った「cairo_sample」のサンプルプログラムを使って解説します. まだダウンロードしていない人は,svnでダウンロードしておきましょう.

実行手順
 #svnから持ってくる(実行した直下にcairo_sampleディレクトリができる)
 svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/
 
 #持ってきたディレクトリに移動
 cd cairo_sample

環境を整える

Emacsを使っているとき基本的にはマウス使わず「ショートカットキー」を多用します.キーボードから手をマウスへ移動するということは時間の浪費なのです.できる限りキーボード操作を快適にするためにもキーボード配置を自分の使いやすいものにしておきましょう.

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

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

  1. デスクトップ画面左上の「ホーム」を開く
  2. 検索ボックスに「キーボードレイアウト」とタイプ --> 「キーボードレイアウト」が出現するので開く
  3. 「オプション」--> 「Ctrlキーの位置」--> 「Ctrl と Caps Lock を入れ替える」を選択

メタキーについて

メタキーを使った操作は,Escキーを使う他に,AltキーC-[ を使ってもOKです. Escキーは離れた場所にあってタイプしづらいですよね.これを覚えておくと M-f(1単語進む) とか M-v(1画面戻る) とか C-M-f(開きかっこから対応する閉じかっこへジャンプ)のようなコマンドが使いやすくなります.

困ったら C-g でキャンセル

「C-g」はキャンセルのショートカットキーです.「困ったらC-g」と覚えておきましょう.

基本操作のショートカットキー

マウスを使わず,キーボード操作のみで何かをしようと思ったとき,ショートカットキーは必要不可欠です. ショートカットキーを使いこなして 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

で可能になります.Backspaceは,頻繁に使う割に,ホームポジションから遠い場所に配置されていて, 手首を動かすのが面倒に感じませんか?これを軽減するという意味で個人的にはオススメ.

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

C-d

1行削除

C-k

操作の取り消し(undo)

「うっかり消したくないところを消してしまった!」というときに便利です. 文字を消すショートカットキーと合わせて覚えておきましょう.

C-/

または

C-x u

マークとリージョン

  • バッファ上で,カーソルがある位置のことを「ポイント」といいます.
  • バッファ上で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-<SPC> カーソルが,これまで付けたマークをさかのぼって移動する.

覚えておくと便利

C-M-\ または C-x <tab> リージョン内の全ての行をインデント(字下げ)する.
C-x h バッファ全体をリージョンにできます。「C-x h → C-M-\」でバッファ全体をインデント.
C-x C-u リージョン内の文字を全て大文字にする
C-x C-l リージョン内の文字を全て小文字にする

検索と置換

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

検索

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 一つ下のレベルのグループに下がる

書籍の紹介

  • 入門 GNU Emacs (D. Cameron, J. Elliott, M. Loy, E. Raymond, B. Rosenblatt 著, 半田剣一,宮下尚,新井貴之,鈴木和也 訳)
  • Emacs テクニックバイブル (るびきち 著)


最終更新日:2015/05/22 13:54:52