目次
Vine Linuxには、Microsoft Windowsユーザにも馴染みやすい『GNOME テキスト・エディタ』が付属していますが、テキストモード(仮想コンソール)でエディタを使用したい場合やより高度な機能を必要とするユーザは、emacs や XEmacs[7] に挑戦してみると良いかもしれません。
キーでの操作方法はどちらもほとんど同じですが、xemacs のほうがよりグラフィカルでツールバーもありますので、初心者には馴染みやすいでしょう。
emacs や XEmacsには、Emacs Lisp と呼ばれる仕組があり、メーラ[8]やIRCクライアント[9]などとしても利用でき、単にテキストエディタというよりは統合環境といった方が良いかもしれません。
emacs と同様のキー操作のエディタで軽いものに ng や jed などがあります。
また、vim というエディタもあります。vim は、モード付エディタと呼ばれる最近では珍しいタイプのエディタですが、emacs と並んで有名なエディタです。CPUの性能や設定ファイルの大きさなどにもよりますが、emacs と比べると起動にかかる時間が短いので、操作に慣れると便利に使えると思います。
$ vimtutor $ vimtutor ja
などでチュートリアルを体験してみてください。
エディタ emacs や XEmacs を起動するには、 からの中にあるやをクリックします。GNOME 端末などから起動する場合は、以下の例の様にコマンドを入力します。
例 3.3. ファイル名を与えて起動
ファイル名を与えて起動すると、そのファイルが起動時に読み込まれます。例えば、emacsを使ってtest.cを編集したい場合は、次の様にします。
$ emacs test.c
また、ファイル名の前に +数字 をつけることで、その行にカーソルが移動した状態で起動することができます。次の様にすると、test.c の 100行目にカーソルが移動した状態で起動できます。
$ emacs+100test.c
ファイル操作等はメニューからも行うことができますが、できるだけキー操作を覚えたほうが作業効率がよくなります。emacs や xemacs では日本語チュートリアルがありますので、ぜひ試してみて下さい。日本語チュートリアルは、emacs の場合はメニューバーの "help"/"Emacs Tutorial" で、xemacs の場合は "ヘルプ"/"基本"/"Tutorials"/"日本語" を選ぶと起動します。
GNOME 端末やコンソールで
$ emacs -e help-with-tutorial $ xemacs -e help-with-tutorial
としても日本語チュートリアルを起動できます。 また次の様にするとチュートリアルの開始時に言語を選択できます。
$ emacs -e help-with-tutorial-spec-language
なお、emacsやxemacsの使用中に表示がおかしくなったら
C-g ([Ctrl]+[G])
を連打すると、かなりの場合もとの状態に戻ります。
また、
C-x C-c ([Ctrl]+[X]のあとに[Ctrl]+[C])
で emacs(xemacs) を終了します。
emacsやxemacsでは、「C-」が「[Ctrl]を押しながら」を意味し、「M-」が「[Alt]を押しながら」もしくは「[ESC]を押したあとに」という意味になります。たとえば「C-n」は「[Ctrl]+[N]」を、「M-v」は「[Alt]+[V]」もしくは「[ESC][V]」の意味です。
また、テキストモード(仮想コンソール)ではなく GNOME上などで emacs を起動している場合には、「[Ctrl]+「[」が「[ESC]」のかわりに使えます。「M-v」を「[Ctrl]+[[][V]」と入力することができます。
Emacs では F10 を押す、または M-` と入力するとメニューの項目などが表示されます。矢印キー や C-p や C-n などで項目を選び、Enter で選択することができます。
emacs や xemacs では、編集中の文書はバッファと呼ばれるメモリ領域に読み込まれ、このバッファの内容に対して書き込みや修正を行います。ファイルに保存する命令を実行した時にはじめて、バッファの内容はディスク上のファイルに書き込まれます。
バッファの内容はウィンドウに表示されます。ウィンドウは複数用意することができ、そこに複数のバッファの内容や、同じバッファの違う部分を表示して編集を行うことができます。
バッファの編集状況等の情報は、ウィンドウの最下部のモードラインに表示されます。
ウィンドウにカーソルがある時、キーボードから入力した文字はカーソル位置に挿入され、カーソルが進みます。日本語を入力する時には、'C-\'で日本語切替えモードになります。 もう一度'C-\'を押すとアルファベットの入力モードに戻ります。
日本語入力システムについては、項2.4. 「GUI環境での日本語入力」を参照して下さい。
TABキーを押すと行のインデントの調整となってしまい、TAB文字を入力出来ないことがあります。そのような時には、C-q TAB のように、C-q のあとでキーを押してください。
また、C-q C-j とすると、改行記号を入力できます。Enter キーの代わりに利用することで、項3.1.5. 「文字列検索・置換」 などの時に改行を含んだ文字列を扱うことができます。
編集中のカーソルの移動は矢印キーの他、以下のようなキーで移動できます。
表 3.1. カーソル移動
| キー操作 | 意味 |
|---|---|
| C-b または ← | 一文字左へ |
| C-f または → | 一文字右へ |
| C-p または ↑ | 一文字上へ |
| C-n または ↓ | 一文字下へ |
| C-v または PgDn | 次の画面に進む |
| M-v または PgUp | 前の画面に戻る |
| C-d | カーソル位置の文字を削除 |
| C-k | カーソル位置から行末までの文字を削除 |
| C-e | 行の一番右へ |
| C-a | 行の一番左へ |
| M-f | 一単語右へ |
| M-b | 一単語左へ |
| M-g <行番号> | 指定行へ移動 (xemacsのみ) |
| M-x goto-line | 指定行へ移動 |
| C-space または C-@ | 現在のカーソル位置にマークをつけ記憶させる |
| C-x C-x | 現在のカーソル位置にマークをつけ、前回マークをつけた位置まで戻る(繰り返すと二点を交互に行き来します) |
カーソル位置の文字の削除は C-d を用います。その他単語の削除や行末の削除等のキーもあります。
表 3.2. 文字削除
| キー操作 | 意味 |
|---|---|
| C-d | カーソル位置の文字を削除 |
| M-d | カーソル位置から一単語削除 |
| C-k | カーソル位置から行末までの文字を削除 |
| M-k | カーソル位置から文末までの文字を削除 |
カーソル行以降の文字列検索には、C-s を用います。C-s を入力するとミニバッファに
I-search:
と表示されるので、検索したい文字列を入力して下さい。検索の終了は C-g を押します。
一度入力した文字列を続けて検索したい時には、C-s を続けて2回押します。C-s の代わりに C-r を用いるとカーソル位置より前にある検索文字列を表示します。日本語の文字列を検索する場合[11]は、C-sの後にEnterを押してから、C-\;でかな漢字変換モードにしてから入力して下さい。
確認付きの文字列の置換を行うには M-% を用います。M-% を入力すると
Query-replace:
とミニバッファに表示されますので、まず置換したい文字列を入力します。例えば, C言語プログラムでint を long にしたいときには、M-%の後に int と入力し、Enterキーを押します。ミニバッファの表示が以下のように代わるので、ここで long を入力し, Enterキーを押します。
Query-replace int with: long
置換する文字列 int があるとそこで、以下のように表示されます。
Query-replace int with long: (? for help)
ここで、スペースキーか'y'を押せば置換が行われ、'n'を押すと置換は行わず、次の候補に移動します。終了するときには、Enterキーか'q'を入力します。上に表示されている通り '?' を入力すればコマンドのリストが表示されます。
文字列の置換を確認なしに一括して行いたいときには、まず一括置換を開始したい場所にカーソルを移動し、M-x を押します。このとき、ミニバッファの表示は以下のようになります。
M-x
ここで、replace-string と入力し、Enterキーを押します。
M-x replace-string
その後は、確認のある場合の文字列置換の場合と同様に、置換のための文字列を入力すれば、一括置換が行われます。
emacs には replace-string の他、非常にたくさんのコマンドがあり、M-x は、このコマンドを入力するのに使われます。コマンドの名前はTabキーで補完しながら入力することができます。候補のコマンドが複数あるときには、候補一覧が表示されます。
表 3.3. 文字列検索・置換
| キー操作 | 意味 |
|---|---|
| C-s | 文字検索 (カーソル行以降で検索) |
| C-r | 文字検索 (カーソル行より前で検索) |
| M-% | 文字列置換(確認あり) |
| M-x replace-string | 文字列置換(確認なし) |
実行したコマンドを取り消して、バッファを元の状態に戻すには、C-x u (または C-_ )を用います。連続して C-x u を用いると、実行した回数だけ前の状態に戻ります。
編集中のバッファの一部分を別の場所にコピーするには以下のような手順で行います。
コピーしたい部分の先頭にカーソルを移動します。
C-Space (または C-@)を入力します(これで現在のカーソルの位置が記憶されます)。
コピーしたい部分の終りまたは始めにカーソルを移動します。
M-w を押す(これで先頭位置(C-Spaceを押した位置)からこの終りの部分までが記憶されます。この部分をリージョン(region:領域)と呼びます。)
コピー先にカーソルを移動します。
C-y を入力します。これでペースト(Emacsではyank(ヤンク)といいます)完了です。
一部分を削除したい時には、上のコピーの手続きで、M-w を入力するかわりに、C-w を入力すれば、設定したリージョンは削除され、記憶されます。
一部分を移動したい時には、上の手続きで削除を行った後、移動先へカーソルを持って行きコピーの場合と同様に C-y を入力すれば、記憶されているリージョンがそこに出力されます。
表 3.5. カット/コピー/ペースト
| キー操作 | 意味 |
|---|---|
| C-space または C-@ | 始点のマーク |
| M-w | 始点から現在のカーソル位置までを記憶(コピー) |
| C-w | 始点から現在のカーソル位置までを削除して記憶(カット) |
| C-y | 記憶内容をカーソル位置に貼付け(ペースト) |
複数のファイルを編集する場合には、ウィンドウを複数開いて、各ウィンドウに、同じバッファの異なる位置を表示したり、複数のバッファを表示したりして編集することができます。
例えば C-x 2 を入力するとカーソルのあるウィンドウが上下2つに分割されます。もとの通り分割されたウィンドウを一つに戻すには、C-x 1 を入力すれば、カーソルのあるほうのウィンドウのみの表示になります。分割したウィンドウ間のカーソル移動には C-x o を用います。分割したウィンドウの境界はマウスでドラッグすれば移動することもできます。
また、C-x 5 2 を入力すると、新しいフレーム(参照項3.1.1. 「バッファ」)がつくられます。複数のフレーム間のカーソル移動には C-x 5 o を用います。
現在のウィンドウに表示するバッファを変更したい時には C-x b を入力すると, 以下のように表示されます。
Switch to buffer: (default test.txt)
ここで、ウィンドウに表示したいバッファ名を入力し、Enterキーを押せば表示バッファが切り替わります。ここで、候補のバッファの一つが上のように default の後ろに表示されます。この候補でよいときには単にEnterキーを押して下さい。
表 3.6. ウィンドウ操作
| キー操作 | 意味 |
|---|---|
| C-x 2 | ウィンドウを上下に分割 |
| C-x 3 | ウィンドウを左右に分割 |
| C-x o | 分割したウィンドウ間をカーソル移動 |
| C-x 0 | 分割したウィンドウのうちカーソルのあるほうを閉じる |
| C-x 1 | 分割したウィンドウのうちカーソルの無いほうを閉じる |
| C-x + | 分割したウィンドウの高さ、幅を均等にする |
| C-x 5 2 | 新しいフレームを開く |
| C-x 5 o | フレーム間でカーソル移動 |
| C-x 5 0 | カーソルのあるフレームを閉じる |
| C-x b | 現在のウィンドウに表示するバッファを指定する |
C-x C-b で編集中のバッファの一覧が表示されます。この一覧表示をしてるウィンドウに C-x o で移動すると、各バッファについていろいな操作を行えます。カーソルの移動は、編集時と同様に C-n, C-p なども使えますが、この一覧表示のバッファでは単に n や p でも移動できます。
ウィンドウに表示したいバッファ名の位置にカーソルを移動し、1 を入力するとウィンドウにはそのバッファの内容が表示されます。その他、削除マークや保存マーク等をつけて、一括して削除や保存と言った作業も行えます。できる操作の一覧は「?」で表示されます。
表 3.7. ファイル一覧ウィンドウでの操作
| キー操作 | 意味 |
|---|---|
| n | カーソルを次の行へ進める |
| p | カーソルを前の行へ戻す |
| 1 | カーソル行のバッファを現在のウィンドウいっぱいに表示する |
| f | カーソル行のバッファを現在のウィンドウに表示する |
| d | カーソル行のバッファに削除マークをつける |
| s | カーソル行のバッファに保存マークをつける |
| x | 削除マークのあるバッファを削除し、保存マークのあるバッファをファイルに保存する |
| u | バッファについているマークを消します。 |
Emacs をカスタマイズしていくには、Emacs が持っているカスタマイズの仕組みを利用するのと、自分で設定ファイルに設定や関数などを書いていくという二つの方法があります。
Emacs,XEmacs の設定ファイルは ~/.emacs で、そこから分岐して、Emacs では ~/.emacs.el を、XEmacs では ~/.xemacs/init.el を読み込むようになっています。
Emacs の設定ファイル~/.emacs.el は、さらに、さまざまなファイルを読み込むようになっています。
フォントや色の設定のために、~/.emacs-faces.el と ~/.emacs-fontset.el を読み込んでいます。
Mew の設定のために、~/.mew.el を読み込んでいます。
Mew については、項3.2.1. 「Mew」 を参照してください。
その他の設定のために、~/.emacs.my.el を読み込みます。
~/.emacs.el , ~/.emacs-faces.el , ~/.emacs-fontset.el , ~/.mew.el は、あらかじめ用意されているものを書き換える、といった方法でカスタマイズしていきます。
~/.emacs.my.el は、用意されていません。自分で作成し、その他の設定や、関数の定義などを記述していきます。
例 3.5. Emacsのフォントの設定
フォントの大きさの設定をするには、~/.emacs-faces.el を編集します。
11行〜17行のところにフォントやウィンドウサイズの設定があります。(行頭の数字は説明のためにつけた行番号です。参照行番号をあらかじめ指定してファイルを開く)
11 (load "~/.emacs-fontset.el")
12 (setq default-frame-alist
13 (append
14 '((font . "fontset-14") ;; デフォルトフォントセット
15 ;(width . 80) (height . 40) ;; ウィンドウサイズ
16 )
17 default-frame-alist))))
14行目の fontset-14 という部分の 14 のところを 10 12 14 16 18 20 22 24 の中から選ぶことができます。(これらは、~/.emacs-fontset.el の中で定義されています。)
fontset-18にするには、次のようにします。
;'((font . "fontset-14") ;; デフォルトフォントセット '((font . "fontset-18")
14行目の最初に ; をつけてコメント(無効)にします。そのあと、次の行に fontset-18 に書き換えた行を追加します。
15行目のウィンドウサイズの設定の部分はコメント(無効)となっています。前回終了時のウィンドウサイズを記録しておく機能が GNOME などにはあるのでコメントのままでよいと思います。「;」をのぞいて有効にすると、毎回、起動時に指定したサイズに調整されるようになります。
また、コンソールやGNOME端末内で起動する際には、同じファイル(~/.emacs-faces.el) の 54行〜58行の部分に設定があり、背景色と文字色の設定ができます。
54 (if (not window-system) 55 (progn 56 ;; 非X環境での色設定 57 (set-face-background 'default "000000") 58 (set-face-foreground 'default "ffffff")))
000000 や ffffff のところを必要に応じて書き換えてください。
設定ファイルを書き換えたら、M-x eval-current-buffer と入力すると、現在開いているバッファ(設定ファイル)を評価することができます。文法のチェックや設定の適用などが行われるので、保存する前後で確認しておくと良いでしょう。
設定や定義する関数などを、コメントと一緒に ~/.emacs.my.el に記述していきます。
Emacs を起動したら C-x C-f と入力し、ミニバッファーに Find file: と表示されたら ~/.emacs.my.el と入力し Enter キーを押してください。
ブラウザなどで下の例をドラッグして選択(コピー)しておき、Emacs で C-y として yank(ペースト)します。
注釈のために 6ヶ所、行末に 1から6までの数字がありますが、その数字は消してください。
C-x C-s で保存します。
例 3.6. Emacs の設定ファイル ~/.emacs.my.el の例
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Time-stamp: <>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 設定の例 ;; 起動時に splash-screen を表示しないようにする。 ;; emacs --no-splash ;; M-x display-splash-screen で表示。 (setq inhibit-startup-message t)
;; M-x shell での ls 等の color での表示のための設定 (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) ;; migemo を有効にする (load "migemo")
;; 複数のマーク地点 (C-Space,C-@) を利用するための設定 Emacs-22以上で利用可能 ;; C-x C-@ や C-x C-Space でさらに前のマーク地点にまで戻れる。 (if (string-match "22." emacs-version) (setq set-mark-command-repeat-pop t) ) ;; 関数などのヘルプを参照した時に、 ;; lisp ファイルではなく Emacs自体のソースで定義されている場合に ;; ソースを参照するための設定 Emacs-22以上で利用可能 ;; emacs の src.rpm をインストールし、rpmbuild -bp *spec まで実行しておく。 ;; 以下は root で emacs22-22.0.50-0.20060403vl2.src.rpm をインストールした場合のパス。 (if (string-match "22." emacs-version) (setq find-function-C-source-directory "/usr/src/vine/BUILD/emacs-22.0.50.20060403/src") ) ;; 関数定義の例 ;; migemo の on/off 切替えと isearch-forward の実行 "\C-," (defun my-search-toggle-migemo-isearch-forward ()
"migemo-toggle-isearch-enable と isearch-forward の実行" (interactive) (migemo-toggle-isearch-enable)(isearch-forward) ) (global-set-key (kbd "C-,") 'my-search-toggle-migemo-isearch-forward)
;; migemo の on/off 切替えと isearch-backward の実行 "\C-." (defun my-search-toggle-migemo-isearch-backward () "migemo-toggle-isearch-enable と isearch-backward の実行" (interactive) (migemo-toggle-isearch-enable)(isearch-backward) ) (global-set-key (kbd "C-.") 'my-search-toggle-migemo-isearch-backward) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Local Variables:
;; mode: emacs-lisp ;; encode: euc-jp-unix ;; End:
|
Emacs の設定ファイルでは、「;」という文字があると、その行の ; 以降の部分はコメントとされ、無視されます。 |
|
Time-stamp: <> という部分は、ファイルを保存すると <> の部分に日時とユーザ名が入り、保存する度に自動的に更新されます。このファイル( |
|
(setq inhibit-startup-message t) という部分で、起動時の splash screen を表示しないようにしています。 これで、Emacs を起動した時に、すぐにファイルの内容が表示されるようになります。 Emacs で用いられている lisp という言語では、t と nil が 真(肯定) と 偽(否定) として用いられます。もともとは nil となっているものなので t の部分を nil と書き換えると、起動時に splash screen が表示されるようになります。 |
|
load というものを使って、migemo というものを読み込んでいます。 migemo は、ローマ字で入力すると日本語も検索[12]できるツールで、load しておくと、C-s と C-r での検索時に migemo での検索が用いられるようになります。 |
|
Emacs では defun というものを使って関数を定義することが出来ます。 ここでは migemo を用いた検索と、通常の検索を切り替え、切り替えた後に検索を開始するという関数 my-search-toggle-migemo-isearch-forward を定義しています。 |
|
ここでは、defun で定義した my-search-toggle-migemo-isearch-forward という関数に、global-set-key というものを使って C-, というキーバインドを割り当てています。 |
|
ここには、このファイルの形式などの情報を書いておきます。 Local Variables: から End : までの部分は、このファイルを Emacs で開いたときに参照されます。 |
設定ファイル~/.emacs.el ~/.emacs-faces.el ~/.mew.el などに書かれている項目を設定する場合は、設定ファイルを直接編集してください。
Emacs を起動して、M-x customize と入力すると図 3.4. 「emacsのCustomize画面」のようなカスタマイズの画面になります。
TABキーを押すことで、アンダーラインのある部分、ボタンになっている部分(Set for Current Session や Go to Group など)、文字の入力が可能な部分にカーソルが移動します。Shift+TAB でカーソルが逆方向(上)に移動します。Enterキーで選択、確定です。Finish を選択すると、閉じます。
ここで操作して設定した内容は、~/.emacs.el に書き込まれます。
あらかじめ ~/.emacs.el の最後のほうに次のように記述しておくと、設定を書き出す専用のファイルを用意することができます。
;; customize の出力先
(setq custom-file "~/.emacs.my.custom.el")
(if (file-exists-p (expand-file-name "~/.emacs.my.custom.el"))
(load (expand-file-name custom-file) t nil nil))
~/.emacs.my.custom.el は、用意されていませんので、自分で作成します。
次のようなファイルを作成しておくとよいでしょう。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Time-stamp: <> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Time-stamp などはなくてもいいです。空のファイルでもかまいません。
なお、customize は、細分化されていて、M-x customize の他に、M-x customize-face , M-x customize-group , M-x customize-variable などと様々なものがあります。M-x customize と入力して TABキーを押してみるとよいでしょう。
例 3.7. Emacs の TAB の幅を設定する
ここでは、M-x customize-variable を利用して TABの幅 を設定してみます。
M-x customize-variable と入力し Enterキーを押します。(TABキーで補完ができます。M-x cus くらいまで入力したら TABキーをおしてみてください。M-x customize となるはずです。さらに -v と入力して TABキーを押すと M-x customize-variable と補完されると思います。)
画面最下部のミニバッファに Customize variable: と表示されたら、tab-width と入力し Enterキーを押します。(これも TABキーで補完が出来ます。)
図 3.5. 「emacsの customize-variable の画面」のように画面が切り替わります。
TABキーを押して、8 という数字が表示されているところまでカーソルを移動し、C-d で8という文字を削除し、数字を入力します。たとえば 4 とすると、TAB の幅が元の幅の半分になります。
というボタンのところまで移動し、Enterキーを押すと、一時的に設定を有効にした状態になります。数値は保存されないので、次回起動時には元の値 8 にもどります。
のボタンで Enterキーを押すと、この数値が、設定ファイルに書き込まれて保存され、次回 Emacs を起動した時に利用できるようになります。
のボタンで、入力した数値がもとにもどります。
のボタンで、前回保存した時の値にもどります。
のボタンで、設定した数値が取り消され、設定ファイルにあった記述も削除されます。
数値を入力し、 のボタンを押してテストして、適当な値になるまで customize を行うという作業を繰り返して、それから で保存するという作業をします。
ここでは、 で保存してしまっていいと思います。
保存したら、 のボタンをクリックします。M-< でページの先頭まで戻ると早いです。
で保存すると、customize の出力先として設定したファイル(~/.emacs.my.custom.el)に、設定していなければ ~/.emacs.el に次のように書き込まれます。
(custom-set-variables ;; custom-set-variables was added by Custom -- don't edit or cut/paste it! ;; Your init file should contain only one such instance. '(server-switch-hook (quote (raise-frame))) '(tab-width 4)) (custom-set-faces ;; custom-set-faces was added by Custom -- don't edit or cut/paste it! ;; Your init file should contain only one such instance. )
don't edit or cut/paste it! と書かれているので、この設定値を変更する時には、直接編集するのではなく M-x customize などを使って再度設定するようにしてください。
[7] XEmacs は VinePlus に収録されています。
[8] mew や wlといったパッケージをインストールする必要があります。mewについては、項3.2.1. 「Mew」で紹介します。
[9] rieceというパッケージをインストールする必要があります。
[10] オプション-nwは No Window (ウィンドウなし)という意味です。
[11] migemoという便利なツールがあります。例 3.6. 「Emacs の設定ファイル ~/.emacs.my.el の例」を参照してください。
[12] 「tatoeba」と入力すると「tatoeba」という文字だけでなく、「たとえば」「タトエバ」「例えば」といったようなものも検索することができます。migemo というパッケージをインストールする必要があります。