2003年度後期 IT教育基礎論演習B

第2回: Emacs基礎

概要と目標

■ 概要

UNIX上で利用される汎用的なエディタの1つとして、Emacsの基本操作を習得する。

■ 目標

目次


演習内容

■ はじめに〜Emacsとは

本演習で使用するEmacsは、UNIXやLinux上で利用可能な汎用エディタで、 もっとも利用されているエディタの1つである。 Emacs Lispと呼ばれるプログラミング言語による強力な拡張機能を持ち、 個人の利用方法に応じてカスタマイズが可能なだけでなく、 編集対象とするファイルの種別に応じて、様々なユーザ支援機能を提供する。 このため、各種プログラミング言語によるプログラム開発などを行う場合には、 Emacsを利用することが推奨される。

Emacs19.x までは、 そのままでは日本語などのコードを利用することができず、 そのために、各国語コードに対応したMuleが開発されていたが、 Emacs20.x 以降では、 標準で各国語コードを利用することが可能となっている。

また、Windows上にも、Meadowの名前でEmacs20.xが移植されており、 演習室のPCでも利用することができる。 Meadowでは、端末エミュレータ上で起動されるEmacsと異なり、 マウスによるメニュー操作やカーソル移動などを行うことができるなど、 初心者にも便利な機能が提供されている (UNIXシステム上のEmacsでも、X Window Systemと呼ばれる ウィンドウ環境が利用できる場合、同様の操作を行える)。 なお、現在は、Meadow2の名前でEmacs21.xの移植が進められている。

■ Emacsの起動と終了

□ Emacsの起動

コマンドラインからの起動

UNIXシステムにログインしている端末エミュレータで単純にEmacsを起動するには、 コマンドラインから以下のように入力する。

$ emacs

すると、端末エミュレータ上の画面が、図1に示すようになる。

図1: コマンドラインからのEmacsの起動
PC上のMeadowの起動

PCにインストールされたMeadowを起動する場合、 Windowsのスタートメニューのをクリックし、 すべてのプログラムをクリックし、 Meadowの中のMeadowを選択する。 すると、図2に示すウィンドウが開く。

図2: Meadowの起動

□ Emacsの終了

起動したEmacs(もしくはMeadow)を終了するには、Emacsの中で、 Ctrlキーを押しながら アルファベットのxキーを押した後(C-x)、 Ctrlキーを押しながら アルファベットのcキーを押す(C-c)。

Meadowを終了する場合には、コマンドラインからC-x C-cを入力するか、 もしくは、MeadowのFilesメニューにある Exit Emacs (C-x C-c)を選択してもよい。

■ 新規ファイルの作成、既存ファイルの編集、保存

□ 新規ファイルの作成と既存ファイルの編集

コマンドラインから引数として何も指定せずにEmacsを起動した場合や、 WindowsのスタートメニューからMeadowを起動した場合、 Emacsの画面の下から2行目の部分であるステータスラインに、 図3に示すように「*scratch*」と表示される。

図3: Emacsのステータスライン
 
-EEE:---F1  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All-----
 

これは、現在Emacs上で編集するファイルが指定されていないことを示しており、 このままでは新規ファイルの作成や既存ファイルの編集を行うことができない。

新規にファイルを作成する場合や、既にあるファイルを編集するためには、 コマンドラインからEmacsを起動する際に、その引数として、 作成、もしくは編集したファイルを指定する。 例えば新規に「sample-file.txt」というファイルを作成したい場合、 コマンドラインに以下のように入力する。

$ emacs sample-file.txt

すると、以下のようにステータスライン上の「*scratch*」の部分が 指定したファイル名となったかたちでEmacsが起動される。

 
-EEE:---F1  sample-file.txt   7:14PM   (Text Encoded-kbd)--L1--All--------------
 

また、既に起動してあるEmacsやMeadowから新規にファイルを作成したり、 既存ファイルを読み込む場合には、Emacsの中で、 Ctrlキーを押しながら アルファベットのxキーを押した後(C-x)、 Ctrlキーを押しながら アルファベットのfキーを押す(C-f) (Meadowの場合、Filesメニューの Open File... (C-x C-f)を選択してもよい)。

すると、Emacsのステータスラインの下に、 以下のように「Find file: ~/」と表示される (注: "~/"の部分は、 カレントディレクトリであるホームディレクトリを示し、 その時点でのカレントディレクトリにより異なる)。

 
-EEE:---F1  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All-----
Find file: ~/ 

そこで、以下のように「Find file: ~/」に引き続き、 作成、もしくは編集したいファイル名を入力し、 Enterキーを押す。

 
-EEE:---F1  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All-----
Find file: ~/sample-file.txtEnter

Meadowを利用している場合、演習用Windowsシステムでは、 UNIXシステム上のホームディレクトリが「U:」ドライブとして ネットワークドライブに割り当てられているので、 以下のように、「~/」の部分を消去し、 「u:/sample-file.txt」と入力することにより、 各自のホームディレクトリ上のファイルを作成、編集することができる。

 
[--]E(Unix)--  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All--
Find file: u:/sample-file.txt

□ ファイルの保存

新規ファイルを作成や既存ファイルの編集において、 文字を入力するなど、実際にファイル内容に変更を加えた場合、 ステータスラインの左側で、もともと「--」と表示されていた部分が、 以下のように「**」となる。

 
-EEE:**-F1  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All-----
 

これは、編集中のファイルがまだ未保存であることを示しており、 このままEmacsを終了させてしまうと、編集した部分が保存されないこととなる。

作成、編集したファイルを保存するには、 Ctrlキーを押しながら アルファベットのxキーを押した後(C-x)、 Ctrlキーを押しながら アルファベットのsキーを押す(C-s) (Meadowの場合、Filesメニューの Save Buffer (C-x C-s)を選択してもよい)。 すると、ステータスラインの「**」の部分が、 以下のようにまた「--」の状態となる。

 
-EEE:---F1  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All-----
 

このように、ステータスラインのファイルの保存状態を確認し、 編集したファイルが正しく保存されたことを確認し、Emacsを終了するとよい。 なお、ファイルが保存されていない状態でEmacsを終了しようとすると、 以下のようにファイルを保存するかどうかを問い合わせてくるので、 この場合、キーボードから「y」を入力することで ファイルを保存してからEmacsを終了することもできる。

 
-EEE:---F1  *scratch*      6:46PM   (Lisp Interaction Encoded-kbd)--L5--All-----
Save file /home/a1fm1001/sample-file.txt? (y, n, !, ., q, C-r or C-h)  

■ Emacsの基本操作

MeadowやX Window System上のEmacsなど、 グラフィカルユーザインタフェースを提供するEmacsの場合、 画面上段の各種メニューを利用することが可能であるが、 コマンドラインから起動したEmacsでは、 各種操作をキーボードから入力する必要がある。 また、Emacsを活用し、プログラムファイルなどを効率的に記述するには、 キーボードからの各種操作方法を覚えていたほうがよい。 そのため、ここではキーボードからの操作方法を説明する。

□ キー入力の方法とその表記

Emacsでは、各種の操作をキーボードからの入力により行うが、 このとき、Ctrlキーや Metaキーを組み合わせた入力が多数ある (例: ファイルの保存では、Ctrlキーを押しながら xキーを押した後、 Ctrlキーを押しながら sキーを押す)。 このような、 Ctrlキーを押しながら他のキーを押す操作を C-<k>、 またMetaキーを押しながら他のキーを押す操作を M-<k>のように表記する (注: "<k>"は、任意のキーを示す)。

表1に、主な表記とその入力方法を示す。

表1: キー入力の表記とその入力方法
表記入力方法
C-<k> Ctrlキーを押しながら <k>キーを押す
M-<k> Escキーを押した後に <k>キーを押す
もしくは、Meadowの場合、 Altキーを押しながら <k>キーを押す
M-x <command>  M-x の後に、コマンド名を入力し、 Enterキーを押す
DEL DELキーを押す
RET Enterキーを押す
SPC スペースキーを押す

ただし、PCなど、端末によっては Metaキーが無いものもある。 その場合、Escキーを押した後、他のキーを押すことにより、 Metaキーを押したのと同様の入力を行うことができる。 また、Meadowの場合には、 Metaキーの代わりに Altキーを利用することができる。

また、Emacsでは、各種機能にコマンド名が付けられており、 M-xを入力した後に、そのコマンド名をキーボードから入力し、 Enterキーを押すことで、 対応する機能を実行することができる。 例えば、ファイルを保存する機能には "save-buffer"という名前が付けられているので、 C-x C-s と入力する代わりに、 M-x save-buffer Enterと入力してもよい。

□ 主な機能

以下に、Emacsでよく利用される主な機能を示す。

表2: ファイル操作
コマンド名 キー入力 機能
save-bufferC-x C-s ファイルの保存
write-fileC-x C-w ファイル名を指定してファイルを保存
find-fileC-x C-f ファイルの読み込み、もしくは新規作成

表3: カーソル移動
コマンド名 キー入力 機能
previous-lineC-p カーソルを1行上に移動(注1)
next-lineC-n カーソルを1行下に移動(注1)
backward-charC-b カーソルを1文字左に移動(注1)
forward-charC-f カーソルを1文字右に移動(注1)
backward-wordM-b カーソルを1単語左に移動
forward-wordM-f カーソルを1単語右に移動
scroll-downM-v カーソルを1ページ下に移動
scroll-upC-v カーソルを1ページ上に移動
beginning-of-lineC-a カーソルを行頭に移動
end-of-lineC-e カーソルを行末に移動
isearch-forwardC-s 入力された文字の前方方向の検索
次を検索する場合にはC-sを入力し、逆方向に検索するにはC-r
検索を終了するにはRETを入力
isearch-backwardC-r 入力された文字の後方方向の検索
次を検索する場合にはC-rを入力し、逆方向を検索するにはC-s
検索を終了するにはRETを入力
注1: 上下左右のカーソルキーによる移動も可能。

表4: 編集
コマンド名 キー入力 機能
delete-backward-charDEL(注2) カーソルの左の1文字を削除
delete-charC-d カーソル位置の1文字を削除
kill-lineC-k カーソル位置より右の1行を削除し、カットバッファに保存
yankC-y カットバッファに保存された文字列をカーソル位置に挿入
set-mark-commandC-SPC カーソル位置にマークを付ける(注3)
kill-regionC-w マークとカーソル位置で囲まれる範囲を削除し、 カットバッファに保存
kill-regionM-w マークとカーソル位置で囲まれる範囲をカットバッファに保存
query-replaceESC % カーソル位置以降にある文字列の置き換え
undoC-x u 1つ前の操作の取り消し
注2: 演習で利用するEmacsでは、便宜上、 BackSpaceキーに変更してある。
注3: マークが見えるわけではない。

表5: その他
コマンド名 キー入力 機能
keyboard-quitC-g 現在入力中のキーシーケンスやコマンドの実行をキャンセル
set-buffer-file-coding-systemC-x RET f ファイル保存用コードの指定
suspend-emacsC-z Emacsの一時中断(注4)
help-with-tutorialC-h t(注5) Emacsチュートリアルの起動
注4: コマンドラインよりEmacsを起動した場合のみ可能。 復帰するには、コマンドラインより 「fgEnter」と入力する
注4: 演習室で利用するEmacsでは、便宜上、 C-hをDELに変更してあるためC-hを入力することができない。 替わりに、M-x helpを実行した後に、tと入力する。

ただし、Emacsで利用可能な機能は、このほかにも多数ある。 とりわけ、Emacsでは、編集するファイルの種類に応じて モードを切り替えることができ、 各モード毎に利用できる機能が異なる。 また、Emacs Lispプログラムを記述し、自分で新たな機能を定義したり、 キーバインドを変更することができる。 このような他のEmacsの機能に関しては、 各自、書籍やwebページ等で調べ、学習すること。

■ ファイル保存用コード

Emacsでは、アルファベットや日本語のほか、 各国語の文字を利用できるようになっているが、 逆に、Emacsでファイルを作成、保存する際は、 どのコードで保存するかを正しく設定する必要がある。 とりわけ日本語の場合、同じ日本語であっても、 一般に多く利用される漢字コードとして、 JISコード、シフトJISコード(WindowsやMacOSで利用されている)、 日本語EUCコード(UNIXやLinuxで主に利用されている)、 ユニコード(Utf-8; 現在標準化が進められている各国語対応コード)などがある。 また、漢字コードのほかに、改行コードも、 UNIX、Windows、MacOSでそれぞれ異なり、 これらを利用目的に応じて指定する必要がある。 表6に、よく利用されるファイル保存コードの例を示す。

表6: ファイル保存コードの例
コード名 文字コード 改行コード 注釈
euc-japan-unix 日本語EUC UNIX改行コード UNIX系OS等で広く利用されているコード
sjis-dos シフトJIS DOS(Windows)改行コード Windowsシステムで広く利用されているコード
sjis-mac シフトJIS Macintosh改行コード MacOSシステムで広く利用されているコード

UNIX上で主に利用するファイルの場合には、EUC漢字コード、 UNIX改行コードを組み合わせた"euc-japan-unix"、 Windows上で主に利用するファイルの場合には"、 シフトJIS、Windows改行コードを組み合わせた"sjis-dos"を利用するとよい。 なお、演習用のEmacsでは、便宜上、"euc-japan-unix"に設定してあるが、 適宜切り替えることができる。 現在編集中のファイルを保存するコードを指定するには C-x RET fと入力し、 指定したいコード名を入力すればよい。

演習課題

■ Emacsチュートリアルの実行

Emacsチュートリアルを起動し、実行せよ (レポートを提出する必要はない)。

参考書籍、Web

  1. 池田 克巳 訳: Emacs Beginner's HOWTO, Linux Japanese FAQ Project, ツールの解説
  2. 慶応大学SFC CNSガイド編集委員会 編集: 慶応大学SFC CNSガイド 第3部 UNIXの操作「10. Emacsの基礎」,「11. Emacsでの編集」

Last modified: Tue Oct 07 19:50:15 JST 2003