source: projects/Vine-manual/trunk/emacs-guide.xml @ 401

Revision 401, 46.4 KB checked in by yasumichi, 14 years ago (diff)

fixed link

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
4<!--DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V5.0//EN" "http://www.oasis-open.org/docbook/xml/5.0/docbookx.dtd"-->
5<book id="emacs-guide" lang="ja">
6 <bookinfo>
7  <title>Emacs 利用ガイド</title>
8  <authorgroup>
9   <author>
10    <firstname>Munehiro</firstname>
11    <surname>Yamamoto</surname>
12   </author>
13   <editor>
14    <firstname>Masaharu</firstname>
15    <surname>Iwai</surname>
16   </editor>
17  </authorgroup>
18
19  <abstract>
20   <para>
21    Vine Linux 5.X の Emacs(以下、Emacs は GNU Emacs を指す)環境は、
22    Vine Linux 4.2 までのそれと比べて、大幅に変更されています。
23   </para>
24   <para>
25    このドキュメントは、新しく搭載された system-wide な設定および
26    vine-default を中心に解説します。
27   </para>
28  </abstract>
29 </bookinfo>
30
31 <chapter id="system-wide">
32  <title>system-wide な設定</title>
33  <para>
34   Emacsを起動すると、site-start.el を読み終われば、
35   すぐに ~/.emacs.el を読み込みます。
36   site-start.el は Vine Linux の distribution-wide な設定ファイルのため、
37   4.2 以前で system-wide な設定を施すためには、
38   RPMパッケージがアップデートされるたびに site-start.el を
39   編集する必要がありました。
40  </para>
41  <para>
42   そこで 5.0 では、直接 site-start.el を変更しなくても、
43   system-wide な設定をできるようにしました。
44  </para>
45 
46  <para>
47   system-wide な設定ファイルは、
48   Emacs のメジャーバージョンが XX の場合、
49   /etc/emacs/emacs-XX-local.el に配置されています。
50   Emacs-XX を起動したとき、
51   もし /etc/emacs/emacs-XX-local.el が存在すれば、
52   site-start.el の一番最後に読み込まれます。
53   したがって、distribution-wide な設定よりも emacs-XX-local.el が優先されます。
54  </para>
55 </chapter>
56
57 <chapter id="vine-default">
58  <title>Vine Linux のデフォルト設定:vine-default</title>
59  <para>
60   Vine Linux の Emacs では、
61   Emacs 上で動作するアプリケーションのパッケージをインストールしたら、
62   ユーザ初期設定ファイル ~/.emacs.el に何も設定を記述しなくても、
63   そのアプリケーションがある程度使えるように、
64   あらかじめ設定を用意し、その設定を自動的に読み込むようにしています。
65   この Emacs における Vine Linux のデフォルト設定を
66   vine-default と呼ぶことにします。
67  </para>
68
69  <sect1>
70   <title>使い方</title>
71   <para>
72    vine-default は、/usr/share/emacs-23.x/site-lisp 以下に格納されています。
73    <itemizedlist>
74     <listitem>
75      <para>
76       vine-default-base.el:Emacs の基本的な設定
77      </para>
78     </listitem>
79     <listitem>
80      <para>
81       vine-default-faces.el:Emacs のフォントやカラーの設定
82      </para>
83     </listitem>
84     <listitem>
85      <para>
86       <emphasis>package</emphasis>/vine-default-package.el:<emphasis>package</emphasis> の設定
87      </para>
88     </listitem>
89    </itemizedlist>
90   </para>
91
92   <para>
93    Emacs を起動すると、
94    デフォルトで vine-default の boolean が t になっているので、
95    vine-default を読み込みます。
96   </para>
97
98   <para>
99    もし vine-default をすべて無効にしたい場合は、~/.emacs.el に
100    <screen>
101(setq vine-default nil)</screen>
102    を設定します。
103    この場合は、メニューバーと言語ロケール以外は何も設定されていません。
104   </para>
105
106   <para>
107    vine-default のうち、いくつかの設定を無効にすることができます。
108    各 vine-default は、vine-default-<emphasis>name</emphasis> の
109    boolean が定義されていて、
110    デフォルトでは t になっています。
111   </para>
112
113   <para>
114    例えば、
115    vine-default-base,
116    vine-default-faces,
117    vine-default-yatex,
118    vine-default-mew
119    を無効にしたい場合は、
120    ~/.emacs.el に
121    <screen>
122(setq vine-default-base nil
123      vine-default-faces nil
124      vine-default-yatex nil
125      vine-default-mew nil
126    )</screen>
127    を設定します。
128   </para>
129
130   <para>
131    いくつかの Emacs Lisp パッケージのみを有効にしたいときは、
132    一旦すべての vine-default を無効にした上で、
133    いくつかの vine-default を有効にしてください。
134   </para>
135
136   <para>
137    例えば、
138    vine-default.yatex,
139    vine-default-tamago
140    のみを有効にしたい場合は、
141    ~/.emacs.el に
142    <screen>
143(setq vine-default nil)
144(requires 'vine-default-yatex)
145(requires 'vine-default-tamago)</screen>
146    を設定します。
147   </para>
148  </sect1>
149
150  <sect1>
151   <title>設定されている vine-default の閲覧</title>
152
153   <para>
154    Emacs 上からインストールされている
155    elisp パッケージにあらかじめ設定されている
156    vine-default の設定を閲覧できます。
157   </para>
158
159   <para>
160    Emacs 上で
161    <screen>
162M-x show-vine-default</screen>
163    を実行すると、
164    起動している Emacs のバージョンに対応した
165    vine-default の設定を閲覧できます。
166   </para>
167  </sect1>
168
169  <sect1 id="advanced-usage">
170   <title>高度な使い方</title>
171
172   <para>   
173    vine-default での設定を上書きしたい場合はフックを使います。
174   </para>
175
176   <para>
177    例えば、vine-default で
178    set-frame-font には次のように「Monospace 12」が設定されていたとします。
179    <screen>
180(if window-system
181    (set-frame-font "Monospace 12"))</screen>
182    これを ~/.emacs.el で変更したい場合は
183    after-vine-default-setup-hook をフックしてください。
184    <screen>
185(add-hook 'after-vine-default-setup-hook
186          (lambda ()
187            (if window-system
188                (set-frame-font "Monospace 10"))))</screen>
189   </para>
190
191   <para>
192    上記はあくまで一例として紹介しましたが、
193    フォントの設定を変更したい方は、現実的には、
194    vine-default-faces 自体を使わないと思われますので、~/.emacs.el に
195    <screen>
196(setq vine-default-faces nil)
197(unless vine-default-faces
198    (if window-system (set-frame-font "DejaVu Sans Mono 10")))</screen>
199    のように、
200    vine-default-faces を無効にしておいてフォントの設定をしても良いです。
201   </para>
202
203   <para>
204    また、各 vine-default で設定されていない項目についてはフックせずに、
205    そのまま ~/.emacs.el に記述しても有効です。
206   </para>
207
208   <para>
209    vine-default で何が設定されているのかをよく理解していない場合は、
210    とりあえず after-vine-default-setup-hook
211    へフックしてしまっても問題ありません。
212   </para>
213
214   <para>
215    そのため、別のファイル .emacs-misc.el にまとめてしまい、
216    以下のようにして ~/.emacs.el でフックして読み込ませてしまっても良いです。
217    <screen>
218(add-hook 'after-vine-default-setup-hook
219          (lambda ()
220            (load (expand-file-name "~/.emacs.misc.el") nil t nil)
221            ))</screen>
222   </para>
223
224   <para>
225    この仕組みの詳細については
226    <xref linkend="settings-under-vine-default"/>を参照してください。
227   </para>
228  </sect1>
229 
230  <sect1>
231   <title>IME</title>
232   <para>
233    Vine Linux の Emacs 上における IME は、
234    X 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。
235   </para>
236
237   <para>
238    もし EMACS_IME と異なる IME を使いたい場合は、
239    skk を例にすると、~/.emacs.el に
240    <screen>
241(setq emacs-ime "skk")</screen>
242を設定します。
243   </para>
244  </sect1>
245
246  <sect1>
247   <title>Vine Linux 4 の .emacs.my.el</title>
248   <para>
249    Vine Linux 4.2 までの ~/.emacs.el には、
250    ユーザ用初期化ファイル ~/.emacs.my.el があれば、
251    それを読み込む仕組みがありました。
252   </para>
253
254   <para>
255    Vine Linux 5.x では、vine-default に移行したため、
256    .emacs.my.el を読み込む仕組みは廃止しました。
257   </para>
258
259   <para>
260    もし過去の .emacs.my.el を流用したい場合は、
261    以下のように after-vine-default-setup-hook にフックして、
262    ~/.emacs.my.el を読み込ませることができます。
263    <screen>
264(add-hook 'after-vine-default-setup-hook
265          (lambda ()
266            (if (file-exists-p (expand-file-name "~/.emacs.my.el"))
267                (load (expand-file-name "~/.emacs.my.el") nil t nil))
268            ))</screen>
269   </para>
270
271   <para>
272    ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、
273    Vine Linux 4の Emacs 22 などで使っていた
274    ~/.emacs.my.el をそのまま流用できるとは限りません。
275   </para>
276  </sect1>
277
278  <sect1>
279   <title>仕組み</title>
280   <para>
281    vine-default は、各デフォルト設定を読み込む *-init.el を、
282    vine-default-setup 内で読まれる
283    vine-default-setup-hook にひっかけて一旦ストックしておき、
284    after-init-hook にひっかけた vine-default-setup を実行することにより、
285    Vine Linux のデフォルト設定が読み込まれます。
286   </para>
287
288   <para>
289    具体的には、site-start.el と *-init.el
290    に以下のような関数とフックを定義しています。
291    <screen>
292;;; Emacs default settings for Vine Linux
293(defcustom emacs-ime (getenv "EMACS_IME")
294  "A variable of default Input Method Editor"
295  :type 'string)
296(if (null emacs-ime)
297    (setq emacs-ime "scim"))
298
299(defcustom vine-default t
300  "A boolean for all Vine Linux default settings"
301  :type 'boolean)
302(if (equal (getenv "LOGNAME") "root")
303    (setq vine-default nil))
304
305(defcustom vine-default-base t
306  "A boolean for vine-default-base"
307  :type 'boolean)
308
309(defcustom vine-default-faces t
310  "A boolean for vine-default-faces"
311  :type 'boolean)
312
313(defvar vine-default-setup-hook nil
314  "*List of functions to be called at vine-default-setup")
315
316(defvar after-vine-default-setup-hook nil
317  "*List of functions to be called at the end of vine-default-setup")
318
319(defun vine-default-setup ()
320  "a function for setup to default configurations of Vine Linux."
321  (if vine-default
322      (progn
323        (if vine-default-base (require 'vine-default-base))
324        (if vine-default-faces (require 'vine-default-faces))
325        (run-hooks 'vine-default-setup-hook)
326        (run-hooks 'after-vine-default-setup-hook)
327        )
328    )
329  )
330
331(add-hook 'after-init-hook 'vine-default-setup)
332;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
333
334(mapc 'load (directory-files "/etc/emacs-23.1/site-start.d" t "\\.el\\'"))</screen>
335   </para>
336
337   <para>
338    Emacs の関連パッケージに対しては、例えば YaTeX の場合は、
339    50yatex-init.el に以下のような設定を追加しています。
340    <screen>
341(defcustom vine-default-yatex t
342  "A boolean for vine-default-yatex"
343  :type 'boolean)
344
345(add-hook 'vine-default-setup-hook
346          (lambda()
347            (if vine-default-yatex
348                (require 'vine-default-yatex))))</screen>
349   </para>
350
351   <para>
352    vine-default-yatex.el には、
353    YaTeX のデフォルト設定を記述し、
354    (provide 'vine-default-yatex) を提供するようにします。
355   </para>
356  </sect1>
357
358  <sect1 id="settings-under-vine-default">
359   <title>vine-default の下での ~/.emacs.el の設定</title>
360
361   <para>
362    vine-default の下での Emacs の設定は、
363    大きくわけて以下の 3 つの設定パートに分かれています。
364   </para>
365   <para>
366    (a) vine-default
367   </para>
368   <para>
369    (b) vine-default が上書きしない設定
370   </para>
371   <para>
372    (c) vine-default が上書きする設定
373   </para>
374
375   <para>
376    (a) は ~/.emacs.el を読み込んだ直後に、
377    /usr/share/emacs-23.x/site-lisp 以下の
378    vine-default-*.el を然るべき順序で読み込まれます。
379   </para>
380
381   <para>
382    (b), (c) は、必要であれば
383    ~/.emacs.el に(あるいは、.emacs.el から読み込む別の *.el に)設定します。
384   </para>
385
386   <para>
387    (b) を直接 ~/.emacs.el に設定して構いませんが、
388    (c) を直接 ~/.emacs.el に設定していると、
389    (a) により vine-default が優先されてしまいます。
390   </para>
391
392   <para>
393    例えば、以下のように ~/.emacs.el にフォントを設定していても、
394    後から読まれる vine-default-faces.el により
395    「Monospace 12」に上書きされていまいます。
396    <screen>
397(if window-system
398    (set-frame-font "Monospace 10"))</screen>
399    </para>
400
401    <para>
402     このような vine-default を上書きする設定は、
403     after-vine-default-setup-hook をひっかけます。
404     詳細は <xref linkend="advanced-usage"/> を参照してください。
405    </para>
406  </sect1>
407
408</chapter>
409
410        <chapter id="emacs-buffer">
411                <title>バッファ</title>
412                <para>Emacs では、編集中の文書はバッファと呼ばれるメモリ領域に読み込まれ、このバッファの内容に対して書き込みや修正を行います。ファイルに保存する命令を実行した時にはじめて、バッファの内容はディスク上のファイルに書き込まれます。</para>
413                <para>バッファの内容はウィンドウに表示されます。ウィンドウは複数用意することができ、そこに複数のバッファの内容や、同じバッファの違う部分を表示して編集を行うことができます。</para>
414                <para>バッファの編集状況等の情報は、ウィンドウの最下部のモードラインに表示されます。</para>
415               
416                <note><title>ウィンドウという言葉について</title>
417                        <para>一般的な「ウィンドウ」という言葉と、emacs での「ウィンドウ」は異なります。</para>
418                        <para>一般的なウィンドウは emacs ではフレームといい、一つのフレームの中を分割したものをウィンドウと呼びます。</para>
419                        <!--para>下の図では、フレームが一つで、ウィンドウが二つあります。</para>
420
421                        <figure id="emacs-frame-and-window">
422                                <title>emacsのフレームとウィンドウ</title>
423                                <graphic fileref="images/emacs-window.png" />
424                        </figure-->
425                </note>
426
427        </chapter>
428
429        <chapter id="emacs-entry">
430                <title>文字入力</title>
431                <para>ウィンドウにカーソルがある時、キーボードから入力した文字はカーソル位置に挿入され、カーソルが進みます。日本語を入力する時には、'C-\'で日本語切替えモードになります。 もう一度'C-\'を押すとアルファベットの入力モードに戻ります。</para>
432                <para>日本語入力システムについては、<ulink url="desktop-guide.html">デスクトップユーザーズガイド</ulink><ulink url="gnome-basic.html#input-ja">GUI環境での日本語入力</ulink>を参照して下さい。</para>
433
434                <para>TABキーを押すと行のインデントの調整となってしまい、TAB文字を入力出来ないことがあります。そのような時には、C-q TAB のように、C-q のあとでキーを押してください。</para>
435
436                <para>また、C-q C-j とすると、改行記号を入力できます。Enter キーの代わりに利用することで、<xref linkend="emacs-search" /> などの時に改行を含んだ文字列を扱うことができます。</para>
437        </chapter>
438       
439        <chapter id="emacs-cursol">
440                <title>カーソル移動</title>
441                <para>編集中のカーソルの移動は矢印キーの他、以下のようなキーで移動できます。</para>
442                <table id="keybind-for-move-cursor">
443                        <title>カーソル移動</title>
444                        <tgroup cols="2">
445                                <thead>
446                                        <row><entry>キー操作</entry><entry>意味</entry></row>
447                                </thead>
448                                <tbody>
449                                        <row><entry>C-b または ←</entry><entry>一文字左へ </entry></row>
450                                        <row><entry>C-f または →</entry><entry>一文字右へ</entry></row>
451                                        <row><entry>C-p または ↑</entry><entry>一文字上へ</entry></row>
452                                        <row><entry>C-n または ↓</entry><entry>一文字下へ</entry></row>
453                                        <row><entry>C-v または PgDn</entry><entry>次の画面に進む</entry></row>
454                                        <row><entry>M-v または PgUp</entry><entry>前の画面に戻る</entry></row>
455                                        <row><entry>C-d</entry><entry>カーソル位置の文字を削除</entry></row>
456                                        <row><entry>C-k</entry><entry>カーソル位置から行末までの文字を削除</entry></row>
457                                        <row><entry>C-e</entry><entry>行の一番右へ</entry></row>
458                                        <row><entry>C-a</entry><entry>行の一番左へ</entry></row>
459                                        <row><entry>M-f</entry><entry>一単語右へ</entry></row>
460                                        <row><entry>M-b</entry><entry>一単語左へ</entry></row>
461                                        <!--row><entry>M-g &lt;行番号&gt;</entry><entry>指定行へ移動 (xemacsのみ)</entry></row-->
462                                        <row><entry>M-x goto-line</entry><entry>指定行へ移動</entry></row>
463                                        <row><entry>C-space または C-@</entry><entry>現在のカーソル位置にマークをつけ記憶させる</entry></row>
464                                        <row><entry>C-x C-x</entry><entry>現在のカーソル位置にマークをつけ、前回マークをつけた位置まで戻る(繰り返すと二点を交互に行き来します)</entry></row>
465                                </tbody>
466                        </tgroup>
467                </table>
468        </chapter>
469
470        <chapter id="emacs-delete">
471                <title>文字削除</title>
472                <para>カーソル位置の文字の削除は C-d を用います。その他単語の削除や行末の削除等のキーもあります。</para>
473                <table id="keybind-for-delete-characters">
474                        <title>文字削除</title>
475                        <tgroup cols="2">
476                                <thead>
477                                        <row><entry>キー操作</entry><entry>意味</entry></row>
478                                </thead>
479                                <tbody>
480                                        <row><entry>C-d</entry><entry>カーソル位置の文字を削除</entry></row>
481                                        <row><entry>M-d</entry><entry>カーソル位置から一単語削除</entry></row>
482                                        <row><entry>C-k</entry><entry>カーソル位置から行末までの文字を削除</entry></row>
483                                        <row><entry>M-k</entry><entry>カーソル位置から文末までの文字を削除</entry></row>
484                                </tbody>
485                        </tgroup>
486                </table>
487        </chapter>
488
489        <chapter id="emacs-search">
490                <title>文字列検索・置換</title>
491                <para>カーソル行以降の文字列検索には、C-s を用います。C-s を入力するとミニバッファに
492                        <screen>I-search:</screen>
493                        と表示されるので、検索したい文字列を入力して下さい。検索の終了は C-g を押します。</para>
494                <para>一度入力した文字列を続けて検索したい時には、C-s を続けて2回押します。C-s の代わりに C-r を用いるとカーソル位置より前にある検索文字列を表示します。日本語の文字列を検索する場合<footnote><para>migemoという便利なツールがあります。<xref linkend=".emacs.my.el" />を参照してください。</para></footnote>は、C-sの後にEnterを押してから、C-\;でかな漢字変換モードにしてから入力して下さい。</para>
495                <para>確認付きの文字列の置換を行うには M-% を用います。M-% を入力すると
496                        <screen>Query-replace:</screen>
497                        とミニバッファに表示されますので、まず置換したい文字列を入力します。例えば, C言語プログラムでint を long にしたいときには、M-%の後に int と入力し、Enterキーを押します。ミニバッファの表示が以下のように代わるので、ここで long を入力し, Enterキーを押します。</para>
498                <screen>Query-replace int with: long</screen>
499                <para>置換する文字列 int があるとそこで、以下のように表示されます。</para>
500                <screen>Query-replace int with long: (? for help)</screen>
501                <para>ここで、スペースキーか'y'を押せば置換が行われ、'n'を押すと置換は行わず、次の候補に移動します。終了するときには、Enterキーか'q'を入力します。上に表示されている通り '?' を入力すればコマンドのリストが表示されます。</para>
502                <para>文字列の置換を確認なしに一括して行いたいときには、まず一括置換を開始したい場所にカーソルを移動し、M-x を押します。このとき、ミニバッファの表示は以下のようになります。</para>
503                <screen>M-x</screen>
504                <para>ここで、<userinput>replace-string</userinput> と入力し、<keycap>Enter</keycap>キーを押します。</para>
505                <screen>M-x replace-string</screen>
506                <para>その後は、確認のある場合の文字列置換の場合と同様に、置換のための文字列を入力すれば、一括置換が行われます。</para>
507                <para>emacs には replace-string の他、非常にたくさんのコマンドがあり、M-x は、このコマンドを入力するのに使われます。コマンドの名前はTabキーで補完しながら入力することができます。候補のコマンドが複数あるときには、候補一覧が表示されます。</para>
508                <table id="keybind-for-search-and-replace">
509                        <title>文字列検索・置換</title>
510                        <tgroup cols="2">
511                                <thead>
512                                        <row><entry>キー操作</entry><entry>意味</entry></row>
513                                </thead>
514                                <tbody>
515                                        <row><entry>C-s</entry><entry>文字検索 (カーソル行以降で検索)</entry></row>
516                                        <row><entry>C-r</entry><entry>文字検索 (カーソル行より前で検索)</entry></row>
517                                        <row><entry>M-%</entry><entry>文字列置換(確認あり)</entry></row>
518                                        <row><entry>M-x replace-string</entry><entry>文字列置換(確認なし)</entry></row>
519                                </tbody>
520                        </tgroup>
521                </table>
522        </chapter>
523
524        <chapter id="emacs-undo">
525                <title>アンドゥ (取消)</title>
526                <para>実行したコマンドを取り消して、バッファを元の状態に戻すには、C-x u (または C-_ )を用います。連続して C-x u を用いると、実行した回数だけ前の状態に戻ります。</para>
527                <table id="keybind-for-undo">
528                        <title>アンドゥ (取消)</title>
529                        <tgroup cols="2">
530                                <thead>
531                                        <row><entry>キー操作</entry><entry>意味</entry></row>
532                                </thead>
533                                <tbody>
534                                        <row><entry>C-x u または C-_</entry><entry>アンドゥ(実行したコマンドの取消)</entry></row>
535                                </tbody>
536                        </tgroup>
537                </table>
538        </chapter>
539
540        <chapter id="emacs-edit">
541                <title>カット/コピー/ペースト</title>
542                <para>編集中のバッファの一部分を別の場所にコピーするには以下のような手順で行います。</para>
543                <orderedlist>
544                        <listitem><para>コピーしたい部分の先頭にカーソルを移動します。</para></listitem>
545                        <listitem><para>C-Space (または C-@)を入力します(これで現在のカーソルの位置が記憶されます)。</para></listitem>
546                        <listitem><para>コピーしたい部分の終りまたは始めにカーソルを移動します。</para></listitem>
547                        <listitem><para>M-w を押す(これで先頭位置(C-Spaceを押した位置)からこの終りの部分までが記憶されます。この部分をリージョン(region:領域)と呼びます。)</para></listitem>
548                        <listitem><para>コピー先にカーソルを移動します。</para></listitem>
549                        <listitem><para>C-y を入力します。これでペースト(Emacsではyank(ヤンク)といいます)完了です。</para></listitem>
550                </orderedlist>
551                <para>一部分を削除したい時には、上のコピーの手続きで、M-w を入力するかわりに、C-w を入力すれば、設定したリージョンは削除され、記憶されます。</para>
552                <para>一部分を移動したい時には、上の手続きで削除を行った後、移動先へカーソルを持って行きコピーの場合と同様に C-y を入力すれば、記憶されているリージョンがそこに出力されます。</para>
553
554                <table id="keybind-for-kill-and-yank">
555                        <title>カット/コピー/ペースト</title>
556                        <tgroup cols="2">
557                                <thead>
558                                        <row><entry>キー操作</entry><entry>意味</entry></row>
559                                </thead>
560                                <tbody>
561                                        <row><entry>C-space または C-@</entry><entry>始点のマーク</entry></row>
562                                        <row><entry>M-w</entry><entry>始点から現在のカーソル位置までを記憶(コピー)</entry></row>
563                                        <row><entry>C-w</entry><entry>始点から現在のカーソル位置までを削除して記憶(カット)</entry></row>
564                                        <row><entry>C-y</entry><entry>記憶内容をカーソル位置に貼付け(ペースト)</entry></row>
565                                </tbody>
566                        </tgroup>
567                </table>
568        </chapter>
569
570        <chapter id="emacs-window">
571                <title>ウィンドウ操作</title>
572                <para>複数のファイルを編集する場合には、ウィンドウを複数開いて、各ウィンドウに、同じバッファの異なる位置を表示したり、複数のバッファを表示したりして編集することができます。</para>
573                <para>例えば C-x 2 を入力するとカーソルのあるウィンドウが上下2つに分割されます。もとの通り分割されたウィンドウを一つに戻すには、C-x 1 を入力すれば、カーソルのあるほうのウィンドウのみの表示になります。分割したウィンドウ間のカーソル移動には C-x o を用います。分割したウィンドウの境界はマウスでドラッグすれば移動することもできます。</para>
574                <para>また、C-x 5 2 を入力すると、新しいフレーム(参照<xref linkend="emacs-buffer" />)がつくられます。複数のフレーム間のカーソル移動には C-x 5 o を用います。</para>
575                <para>現在のウィンドウに表示するバッファを変更したい時には C-x b を入力すると, 以下のように表示されます。</para>
576                <screen>Switch to buffer: (default test.txt)</screen>
577                <para>ここで、ウィンドウに表示したいバッファ名を入力し、Enterキーを押せば表示バッファが切り替わります。ここで、候補のバッファの一つが上のように default の後ろに表示されます。この候補でよいときには単にEnterキーを押して下さい。</para>
578                <table id="keybind-for-window-and-frame">
579                        <title>ウィンドウ操作</title>
580                        <tgroup cols="2">
581                                <thead>
582                                        <row><entry>キー操作</entry><entry>意味</entry></row>
583                                </thead>
584                                <tbody>
585                                        <row><entry>C-x 2</entry><entry>ウィンドウを上下に分割</entry></row>
586                                        <row><entry>C-x 3</entry><entry>ウィンドウを左右に分割</entry></row>
587                                        <row><entry>C-x o</entry><entry>分割したウィンドウ間をカーソル移動</entry></row>
588                                        <row><entry>C-x 0</entry><entry>分割したウィンドウのうちカーソルのあるほうを閉じる</entry></row>
589                                        <row><entry>C-x 1</entry><entry>分割したウィンドウのうちカーソルの無いほうを閉じる</entry></row>
590                                        <row><entry>C-x +</entry><entry>分割したウィンドウの高さ、幅を均等にする</entry></row>
591                                        <row><entry>C-x 5 2</entry><entry>新しいフレームを開く</entry></row>
592                                        <row><entry>C-x 5 o</entry><entry>フレーム間でカーソル移動</entry></row>
593                                        <row><entry>C-x 5 0</entry><entry>カーソルのあるフレームを閉じる</entry></row>
594                                        <row><entry>C-x b</entry><entry>現在のウィンドウに表示するバッファを指定する</entry></row>
595                                </tbody>
596                        </tgroup>
597                </table>
598        </chapter>
599
600        <chapter id="emacs-filelist">
601                <title>ファイル一覧ウィンドウでの操作</title>
602                <para>C-x C-b で編集中のバッファの一覧が表示されます。この一覧表示をしてるウィンドウに C-x o で移動すると、各バッファについていろいな操作を行えます。カーソルの移動は、編集時と同様に C-n, C-p なども使えますが、この一覧表示のバッファでは単に n や p でも移動できます。</para>
603                <para>ウィンドウに表示したいバッファ名の位置にカーソルを移動し、1 を入力するとウィンドウにはそのバッファの内容が表示されます。その他、削除マークや保存マーク等をつけて、一括して削除や保存と言った作業も行えます。できる操作の一覧は「?」で表示されます。</para>
604                <table id="keybind-for-buffer-menu">
605                        <title>ファイル一覧ウィンドウでの操作</title>
606                        <tgroup cols="2">
607                                <thead>
608                                        <row><entry>キー操作</entry><entry>意味</entry></row>
609                                </thead>
610                                <tbody>
611                                        <row><entry>n</entry><entry>カーソルを次の行へ進める</entry></row>
612                                        <row><entry>p</entry><entry>カーソルを前の行へ戻す</entry></row>
613                                        <row><entry>1</entry><entry>カーソル行のバッファを現在のウィンドウいっぱいに表示する</entry></row>
614                                        <row><entry>f</entry><entry>カーソル行のバッファを現在のウィンドウに表示する</entry></row>
615                                        <row><entry>d</entry><entry>カーソル行のバッファに削除マークをつける</entry></row>
616                                        <row><entry>s</entry><entry>カーソル行のバッファに保存マークをつける</entry></row>
617                                        <row><entry>x</entry><entry>削除マークのあるバッファを削除し、保存マークのあるバッファをファイルに保存する</entry></row>
618                                        <row><entry>u</entry><entry>バッファについているマークを消します。</entry></row>
619                                </tbody>
620                        </tgroup>
621                </table>
622        </chapter>
623
624        <chapter id="emacs-customize">
625                <title>Emacs のカスタマイズについて</title>
626                <para>Emacs をカスタマイズしていくには、Emacs が持っているカスタマイズの仕組みを利用するのと、自分で設定ファイルに設定や関数などを書いていくという二つの方法があります。</para>
627
628                <!--para>Emacs,XEmacs の設定ファイルは <filename>~/.emacs</filename> で、そこから分岐して、Emacs では <filename>~/.emacs.el</filename> を、XEmacs では <filename>~/.xemacs/init.el</filename> を読み込むようになっています。</para-->
629                <para>Emacs の設定ファイルは <filename>~/.emacs</filename> でそこから<filename>~/.emacs.el</filename> を読み込むようになっています。</para>
630                <para>Emacs の設定ファイル<filename>~/.emacs.el</filename> は、さらに、さまざまなファイルを読み込むようになっています。</para>
631
632                <para>フォントや色の設定のために、<filename>~/.emacs-faces.el</filename> と <filename>~/.emacs-fontset.el</filename> を読み込んでいます。</para>
633
634                <para>Mew の設定のために、<filename>~/.mew.el</filename> を読み込んでいます。</para>
635                <para>Mew については、<ulink url="mew.html">メールクライアント Mew</ulink> を参照してください。</para>
636
637                <para>その他の設定のために、<filename>~/.emacs.my.el</filename> を読み込みます。</para>
638
639                <para><filename>~/.emacs.el</filename> , <filename>~/.emacs-faces.el</filename> , <filename>~/.emacs-fontset.el</filename> , <filename>~/.mew.el</filename> は、あらかじめ用意されているものを書き換える、といった方法でカスタマイズしていきます。</para>
640                <para><filename>~/.emacs.my.el</filename> は、用意されていません。自分で作成し、その他の設定や、関数の定義などを記述していきます。</para>
641
642                <sect1 id="utils-1-10-1">
643                        <title>設定ファイルに書き込んでいく場合 1</title>
644
645                        <example id=".emacs-faces.el">
646                                <title>Emacsのフォントの設定</title>
647
648                                <para>フォントの大きさの設定をするには、<filename>~/.emacs-faces.el</filename> を編集します。</para>
649                                <para>11行〜17行のところにフォントやウィンドウサイズの設定があります。(行頭の数字は説明のためにつけた行番号です。参照<ulink url="#emacs-filename-with-linenumber">行番号をあらかじめ指定してファイルを開く</ulink>)</para>
650                                <screen>11              (load "~/.emacs-fontset.el")
65112              (setq default-frame-alist
65213                    (append
65314                     '((font . "<emphasis><replaceable>fontset-14</replaceable></emphasis>") ;; デフォルトフォントセット
65415                       ;(width . 80) (height . 40) ;; ウィンドウサイズ
65516                       )
65617                     default-frame-alist))))</screen>
657                                <para>14行目の fontset-14 という部分の 14 のところを 10 12 14 16 18 20 22 24 の中から選ぶことができます。(これらは、<filename>~/.emacs-fontset.el</filename> の中で定義されています。)</para>
658                                <para>fontset-18にするには、次のようにします。</para>
659                                <screen>                     ;'((font . "<emphasis>fontset-14</emphasis>") ;; デフォルトフォントセット
660                     '((font . "<emphasis>fontset-18</emphasis>")</screen>
661                                <para>14行目の最初に ; をつけてコメント(無効)にします。そのあと、次の行に fontset-18 に書き換えた行を追加します。</para>
662
663                                <para>15行目のウィンドウサイズの設定の部分はコメント(無効)となっています。前回終了時のウィンドウサイズを記録しておく機能が GNOME などにはあるのでコメントのままでよいと思います。「;」をのぞいて有効にすると、毎回、起動時に指定したサイズに調整されるようになります。</para>
664
665                                <para>また、コンソールやGNOME端末内で起動する際には、同じファイル(<filename>~/.emacs-faces.el</filename>) の 54行〜58行の部分に設定があり、背景色と文字色の設定ができます。</para>
666                                <screen>54        (if (not window-system)
66755            (progn
66856              ;; 非X環境での色設定
66957              (set-face-background 'default "<emphasis><replaceable>000000</replaceable></emphasis>")
67058              (set-face-foreground 'default "<emphasis><replaceable>ffffff</replaceable></emphasis>")))</screen>
671                                <para>000000 や ffffff のところを必要に応じて書き換えてください。</para>
672
673                                <para>設定ファイルを書き換えたら、M-x eval-current-buffer と入力すると、現在開いているバッファ(設定ファイル)を評価することができます。文法のチェックや設定の適用などが行われるので、保存する前後で確認しておくと良いでしょう。</para>
674
675                        </example>
676                </sect1>
677
678                <sect1 id="utils-1-10-2">
679                        <title>設定ファイルに書き込んでいく場合 2</title>
680
681                        <para>設定や定義する関数などを、コメントと一緒に <filename>~/.emacs.my.el</filename> に記述していきます。</para>
682                        <para>Emacs を起動したら C-x C-f と入力し、ミニバッファーに Find file: と表示されたら ~/.emacs.my.el と入力し Enter キーを押してください。</para>
683                       
684                        <para>ブラウザなどで下の例をドラッグして選択(コピー)しておき、Emacs で C-y として yank(ペースト)します。</para>
685                        <para>注釈のために 6ヶ所、行末に 1から6までの数字がありますが、その数字は消してください。</para>
686                        <para>C-x C-s で保存します。</para>
687                       
688                        <example id=".emacs.my.el">
689                                <title>Emacs の設定ファイル ~/.emacs.my.el の例</title>
690
691                                <screen>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <co id="comment" />
692;;                       Time-stamp: &lt;&gt; <co id="time-stamp" />
693;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
694
695;; 設定の例
696
697;; 起動時に splash-screen を表示しないようにする。
698;; emacs --no-splash
699;; M-x display-splash-screen で表示。
700(setq inhibit-startup-message t) <co id="no-splash" />
701
702;; M-x shell での ls 等の color での表示のための設定
703(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
704
705;; migemo を有効にする
706(load "migemo") <co id="load" />
707
708;; 複数のマーク地点 (C-Space,C-@) を利用するための設定 Emacs-22以上で利用可能
709;; C-x C-@ や C-x C-Space でさらに前のマーク地点にまで戻れる。
710(if (string-match "22." emacs-version)
711    (setq set-mark-command-repeat-pop t)
712  )
713
714;; 関数などのヘルプを参照した時に、
715;; lisp ファイルではなく Emacs自体のソースで定義されている場合に
716;; ソースを参照するための設定 Emacs-22以上で利用可能
717;; emacs の src.rpm をインストールし、rpmbuild -bp *spec まで実行しておく。
718;; 以下は root で emacs22-22.0.50-0.20060403vl2.src.rpm をインストールした場合のパス。
719(if (string-match "22." emacs-version)
720    (setq find-function-C-source-directory "/usr/src/vine/BUILD/emacs-22.0.50.20060403/src")
721  )
722
723;; 関数定義の例
724
725;; migemo の on/off 切替えと isearch-forward の実行 "\C-,"
726(defun my-search-toggle-migemo-isearch-forward () <co id="defun" />
727  "migemo-toggle-isearch-enable と isearch-forward の実行"
728  (interactive)
729  (migemo-toggle-isearch-enable)(isearch-forward)
730  )
731(global-set-key (kbd "C-,") 'my-search-toggle-migemo-isearch-forward) <co id="global-set-key" />
732
733;; migemo の on/off 切替えと isearch-backward の実行 "\C-."
734(defun my-search-toggle-migemo-isearch-backward ()
735  "migemo-toggle-isearch-enable と isearch-backward の実行"
736  (interactive)
737  (migemo-toggle-isearch-enable)(isearch-backward)
738  )
739(global-set-key (kbd "C-.") 'my-search-toggle-migemo-isearch-backward)
740
741;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
742;; Local Variables: <co id="local_variables" />
743;; mode: emacs-lisp
744;; encode: euc-jp-unix
745;; End:</screen>
746
747                                <calloutlist>
748                                        <callout arearefs="comment">
749                                                <para>Emacs の設定ファイルでは、「;」という文字があると、その行の ; 以降の部分はコメントとされ、無視されます。</para>
750                                        </callout>
751                                        <callout arearefs="time-stamp">
752                                                <para>Time-stamp: &lt;&gt; という部分は、ファイルを保存すると &lt;&gt; の部分に日時とユーザ名が入り、保存する度に自動的に更新されます。このファイル(<filename>~/.emacs.my.el</filename>)の更新日時を自動的に記録するというだけで、他のファイル等への影響はありません。</para>
753                                        </callout>
754                                        <callout arearefs="no-splash">
755                                                <para>(setq inhibit-startup-message t) という部分で、起動時の splash screen を表示しないようにしています。</para>
756                                                <para>これで、Emacs を起動した時に、すぐにファイルの内容が表示されるようになります。</para>
757                                                <para>Emacs で用いられている lisp という言語では、t と nil が 真(肯定) と 偽(否定) として用いられます。もともとは nil となっているものなので t の部分を nil と書き換えると、起動時に splash screen が表示されるようになります。</para>
758                                        </callout>
759                                        <callout arearefs="load">
760                                                <para>load というものを使って、migemo というものを読み込んでいます。</para>
761                                                <para>migemo は、ローマ字で入力すると日本語も検索<footnote><para>「tatoeba」と入力すると「tatoeba」という文字だけでなく、「たとえば」「タトエバ」「例えば」といったようなものも検索することができます。migemo というパッケージをインストールする必要があります。</para></footnote>できるツールで、load しておくと、C-s と C-r での検索時に migemo での検索が用いられるようになります。</para>
762                                        </callout>
763                                        <callout arearefs="defun">
764                                                <para>Emacs では defun というものを使って関数を定義することが出来ます。</para>
765                                                <para>ここでは migemo を用いた検索と、通常の検索を切り替え、切り替えた後に検索を開始するという関数 my-search-toggle-migemo-isearch-forward を定義しています。</para>
766                                        </callout>
767                                        <callout arearefs="global-set-key">
768                                                <para>ここでは、defun で定義した my-search-toggle-migemo-isearch-forward という関数に、global-set-key というものを使って C-, というキーバインドを割り当てています。</para>
769                                        </callout>
770                                        <callout arearefs="local_variables">
771                                                <para>ここには、このファイルの形式などの情報を書いておきます。</para>
772                                                <para>Local Variables: から End : までの部分は、このファイルを Emacs で開いたときに参照されます。</para>
773                                        </callout>
774                                </calloutlist>
775                        </example>
776                       
777                </sect1>
778
779                <sect1 id="utils-1-10-3">
780                        <title>Emacsが持っているカスタマイズの仕組みを利用する場合</title>
781
782                        <note>
783                                <para>設定ファイル<filename>~/.emacs.el</filename> <filename>~/.emacs-faces.el</filename> <filename>~/.mew.el</filename> などに書かれている項目を設定する場合は、設定ファイルを直接編集してください。</para>
784                        </note>
785
786                        <para>Emacs を起動して、M-x customize と入力すると<xref linkend="emacs-M-x-customize"/>のようなカスタマイズの画面になります。</para>
787
788                        <para>TABキーを押すことで、アンダーラインのある部分、ボタンになっている部分(Set for Current Session や Go to Group など)、文字の入力が可能な部分にカーソルが移動します。Shift+TAB でカーソルが逆方向(上)に移動します。Enterキーで選択、確定です。Finish を選択すると、閉じます。</para>
789
790                        <figure id="emacs-M-x-customize">
791                                <title>EmacsのCustomize画面</title>
792                                <graphic fileref="images/emacs-M-x-customize.png" />
793                        </figure>
794
795                        <para>ここで操作して設定した内容は、<filename>~/.emacs.el</filename> に書き込まれます。</para>
796                       
797                        <para>あらかじめ <filename>~/.emacs.el</filename> の最後のほうに次のように記述しておくと、設定を書き出す専用のファイルを用意することができます。</para>
798                       
799                        <screen>;; customize の出力先
800(setq custom-file "<filename>~/.emacs.my.custom.el</filename>")
801(if (file-exists-p (expand-file-name "~/.emacs.my.custom.el"))
802    (load (expand-file-name custom-file) t nil nil))</screen>
803               
804                        <para><filename>~/.emacs.my.custom.el</filename> は、用意されていませんので、自分で作成します。</para>
805               
806                        <para>次のようなファイルを作成しておくとよいでしょう。</para>
807                        <screen>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
808;;                       Time-stamp: &lt;&gt;
809;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</screen>
810
811                        <para>Time-stamp などはなくてもいいです。空のファイルでもかまいません。</para>
812
813                        <para>なお、customize は、細分化されていて、M-x customize     の他に、M-x customize-face , M-x customize-group , M-x customize-variable などと様々なものがあります。M-x customize と入力して TABキーを押してみるとよいでしょう。</para>
814                       
815                        <example id="customize-variable">
816                                <title>Emacs の TAB の幅を設定する</title>
817                                <para>ここでは、M-x customize-variable を利用して TABの幅 を設定してみます。</para>
818                                <para>M-x customize-variable と入力し Enterキーを押します。(TABキーで補完ができます。M-x cus くらいまで入力したら TABキーをおしてみてください。M-x customize となるはずです。さらに -v と入力して TABキーを押すと M-x customize-variable と補完されると思います。)</para>
819                                <para>画面最下部のミニバッファに Customize variable: と表示されたら、tab-width と入力し Enterキーを押します。(これも TABキーで補完が出来ます。)</para>
820                               
821                                <para><xref linkend="emacs-M-x-customize-variable" />のように画面が切り替わります。</para>
822
823                                <figure id="emacs-M-x-customize-variable">
824                                        <title>emacsの customize-variable の画面</title>
825                                        <graphic fileref="images/emacs-M-x-customize-variable.png" />
826                                </figure>
827
828                                <para>TABキーを押して、8 という数字が表示されているところまでカーソルを移動し、C-d で8という文字を削除し、数字を入力します。たとえば 4 とすると、TAB の幅が元の幅の半分になります。</para>
829                                <para><guibutton>Set for Current Session</guibutton> というボタンのところまで移動し、Enterキーを押すと、一時的に設定を有効にした状態になります。数値は保存されないので、次回起動時には元の値 8 にもどります。</para>
830                                <para><guibutton>Save for Future Sessions</guibutton> のボタンで Enterキーを押すと、この数値が、設定ファイルに書き込まれて保存され、次回 Emacs を起動した時に利用できるようになります。</para>
831                                <para><guibutton>Reset</guibutton> のボタンで、入力した数値がもとにもどります。</para>
832                                <para><guibutton>Reset to Saved</guibutton> のボタンで、前回保存した時の値にもどります。</para>
833                                <para><guibutton>Erase Customization</guibutton> のボタンで、設定した数値が取り消され、設定ファイルにあった記述も削除されます。</para>
834
835                                <para>数値を入力し、<guibutton>Set for Current Session</guibutton> のボタンを押してテストして、適当な値になるまで customize を行うという作業を繰り返して、それから <guibutton>Save for Future Sessions</guibutton> で保存するという作業をします。</para>
836                               
837                                <para>ここでは、<guibutton>Save for Future Sessions</guibutton> で保存してしまっていいと思います。</para>
838                               
839                                <para>保存したら、<guibutton>Finish</guibutton> のボタンをクリックします。M-&lt; でページの先頭まで戻ると早いです。</para>
840
841                                <para><guibutton>Save for Future Sessions</guibutton> で保存すると、customize の出力先として設定したファイル(<filename>~/.emacs.my.custom.el</filename>)に、設定していなければ <filename>~/.emacs.el</filename> に次のように書き込まれます。</para>
842
843                                <screen>(custom-set-variables
844  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
845  ;; Your init file should contain only one such instance.
846 '(server-switch-hook (quote (raise-frame)))
847 '(tab-width 4))
848(custom-set-faces
849  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
850  ;; Your init file should contain only one such instance.
851 )</screen>
852
853                                <para>don't edit or cut/paste it! と書かれているので、この設定値を変更する時には、直接編集するのではなく M-x customize などを使って再度設定するようにしてください。</para>
854                        </example>
855               
856                </sect1>
857
858        </chapter>
859
860</book>
Note: See TracBrowser for help on using the repository browser.