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

Revision 1225, 48.0 KB checked in by munepi, 14 years ago (diff)

applied emacs-guide.xml-ime-20100429.patch [vinedocx:210] thanks to iwai-san's help

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   すぐに <filename>~/.emacs.el</filename> を読み込みます。
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   ユーザ初期設定ファイル <filename>~/.emacs.el</filename> に何も設定を記述しなくても、
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 をすべて無効にしたい場合は、<filename>~/.emacs.el</filename> に
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    <filename>~/.emacs.el</filename> に
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    <filename>~/.emacs.el</filename> に
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    これを <filename>~/.emacs.el</filename> で変更したい場合は
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 自体を使わないと思われますので、<filename>~/.emacs.el</filename> に
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    そのまま <filename>~/.emacs.el</filename> に記述しても有効です。
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    以下のようにして <filename>~/.emacs.el</filename> でフックして読み込ませてしまっても良いです。
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 上におけるそれと連動して、<command>setime</command>コマンドなどで設定される環境変数 EMACS_IME で決定されます<footnote>
235                <para>Vine Linux 5 の初期設定では、各ユーザのホームディレクトリに作成される
236                <filename>~/.Xresources</filename><varname>Emacs*useXIM</varname>の値として
237                <literal>false</literal>が設定されているため、XIMは使われません。</para>
238                </footnote><footnote>
239                <para>Vine Linux 5 での初期設定では、tamago パッケージがインストールされている場合は
240                tamago の Anthy インタフェースが使われます。
241                tamago パッケージをインストールしていない場合は emacs パッケージに同梱されている
242                LEIM (Library of Emacs Input Method) が使われます。
243                LEIM では Vine Linux 5 標準のかな漢字変換システム Anthy を使いませんので、
244                変換効率が低くなってしまいます。</para>
245                </footnote>
246   </para>
247
248   <para>
249    環境変数 EMACS_IME と異なる IME を使いたい場合は、<filename>~/.emacs.el</filename> で
250                <varname>emacs-ime</varname> の値に指定してください。anthy-el パッケージに含まれる
251                <filename>anthy.el</filename> を使うときは次のように設定します<footnote>
252                <para>指定する値は、各 Emacs Lisp パッケージに含まれている
253                <filename>vine-default-foo.el</filename> を参照してください。
254                <!-- 一覧表を作成した方が望ましい --></para>
255                </footnote>
256    <screen>
257(setq emacs-ime "anthy-el")</screen>
258   </para>
259  </sect1>
260
261  <sect1>
262   <title>Vine Linux 4 の .emacs.my.el</title>
263   <para>
264    Vine Linux 4.2 までの <filename>~/.emacs.el</filename> には、
265    ユーザ用初期化ファイル ~/.emacs.my.el があれば、
266    それを読み込む仕組みがありました。
267   </para>
268
269   <para>
270    Vine Linux 5.x では、vine-default に移行したため、
271    .emacs.my.el を読み込む仕組みは廃止しました。
272   </para>
273
274   <para>
275    もし過去の .emacs.my.el を流用したい場合は、
276    以下のように after-vine-default-setup-hook にフックして、
277    ~/.emacs.my.el を読み込ませることができます。
278    <screen>
279(add-hook 'after-vine-default-setup-hook
280          (lambda ()
281            (if (file-exists-p (expand-file-name "~/.emacs.my.el"))
282                (load (expand-file-name "~/.emacs.my.el") nil t nil))
283            ))</screen>
284   </para>
285
286   <para>
287    ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、
288    Vine Linux 4の Emacs 22 などで使っていた
289    ~/.emacs.my.el をそのまま流用できるとは限りません。
290   </para>
291  </sect1>
292
293  <sect1>
294   <title>仕組み</title>
295   <para>
296    vine-default は、各デフォルト設定を読み込む *-init.el を、
297    vine-default-setup 内で読まれる
298    vine-default-setup-hook にひっかけて一旦ストックしておき、
299    after-init-hook にひっかけた vine-default-setup を実行することにより、
300    Vine Linux のデフォルト設定が読み込まれます。
301   </para>
302
303   <para>
304    具体的には、site-start.el と *-init.el
305    に以下のような関数とフックを定義しています。
306    <screen>
307;;; Emacs default settings for Vine Linux
308(defcustom emacs-ime (getenv "EMACS_IME")
309  "A variable of default Input Method Editor"
310  :type 'string)
311(if (null emacs-ime)
312    (setq emacs-ime "scim"))
313
314(defcustom vine-default t
315  "A boolean for all Vine Linux default settings"
316  :type 'boolean)
317(if (equal (getenv "LOGNAME") "root")
318    (setq vine-default nil))
319
320(defcustom vine-default-base t
321  "A boolean for vine-default-base"
322  :type 'boolean)
323
324(defcustom vine-default-faces t
325  "A boolean for vine-default-faces"
326  :type 'boolean)
327
328(defvar vine-default-setup-hook nil
329  "*List of functions to be called at vine-default-setup")
330
331(defvar after-vine-default-setup-hook nil
332  "*List of functions to be called at the end of vine-default-setup")
333
334(defun vine-default-setup ()
335  "a function for setup to default configurations of Vine Linux."
336  (if vine-default
337      (progn
338        (if vine-default-base (require 'vine-default-base))
339        (if vine-default-faces (require 'vine-default-faces))
340        (run-hooks 'vine-default-setup-hook)
341        (run-hooks 'after-vine-default-setup-hook)
342        )
343    )
344  )
345
346(add-hook 'after-init-hook 'vine-default-setup)
347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
348
349(mapc 'load (directory-files "/etc/emacs-23.1/site-start.d" t "\\.el\\'"))</screen>
350   </para>
351
352   <para>
353    Emacs の関連パッケージに対しては、例えば YaTeX の場合は、
354    50yatex-init.el に以下のような設定を追加しています。
355    <screen>
356(defcustom vine-default-yatex t
357  "A boolean for vine-default-yatex"
358  :type 'boolean)
359
360(add-hook 'vine-default-setup-hook
361          (lambda()
362            (if vine-default-yatex
363                (require 'vine-default-yatex))))</screen>
364   </para>
365
366   <para>
367    vine-default-yatex.el には、
368    YaTeX のデフォルト設定を記述し、
369    (provide 'vine-default-yatex) を提供するようにします。
370   </para>
371  </sect1>
372
373  <sect1 id="settings-under-vine-default">
374   <title>vine-default の下での ~/.emacs.el の設定</title>
375
376   <para>
377    vine-default の下での Emacs の設定は、
378    大きくわけて以下の 3 つの設定パートに分かれています。
379   </para>
380   <para>
381    (a) vine-default
382   </para>
383   <para>
384    (b) vine-default が上書きしない設定
385   </para>
386   <para>
387    (c) vine-default が上書きする設定
388   </para>
389
390   <para>
391    (a) は <filename>~/.emacs.el</filename> を読み込んだ直後に、
392    /usr/share/emacs-23.x/site-lisp 以下の
393    vine-default-*.el を然るべき順序で読み込まれます。
394   </para>
395
396   <para>
397    (b), (c) は、必要であれば
398    <filename>~/.emacs.el</filename> に(あるいは、.emacs.el から読み込む別の *.el に)設定します。
399   </para>
400
401   <para>
402    (b) を直接 <filename>~/.emacs.el</filename> に設定して構いませんが、
403    (c) を直接 <filename>~/.emacs.el</filename> に設定していると、
404    (a) により vine-default が優先されてしまいます。
405   </para>
406
407   <para>
408    例えば、以下のように <filename>~/.emacs.el</filename> にフォントを設定していても、
409    後から読まれる vine-default-faces.el により
410    「Monospace 12」に上書きされていまいます。
411    <screen>
412(if window-system
413    (set-frame-font "Monospace 10"))</screen>
414    </para>
415
416    <para>
417     このような vine-default を上書きする設定は、
418     after-vine-default-setup-hook をひっかけます。
419     詳細は <xref linkend="advanced-usage"/> を参照してください。
420    </para>
421  </sect1>
422
423</chapter>
424
425        <chapter id="emacs-buffer">
426                <title>バッファ</title>
427                <para>Emacs では、編集中の文書はバッファと呼ばれるメモリ領域に読み込まれ、このバッファの内容に対して書き込みや修正を行います。ファイルに保存する命令を実行した時にはじめて、バッファの内容はディスク上のファイルに書き込まれます。</para>
428                <para>バッファの内容はウィンドウに表示されます。ウィンドウは複数用意することができ、そこに複数のバッファの内容や、同じバッファの違う部分を表示して編集を行うことができます。</para>
429                <para>バッファの編集状況等の情報は、ウィンドウの最下部のモードラインに表示されます。</para>
430               
431                <note><title>ウィンドウという言葉について</title>
432                        <para>一般的な「ウィンドウ」という言葉と、emacs での「ウィンドウ」は異なります。</para>
433                        <para>一般的なウィンドウは emacs ではフレームといい、一つのフレームの中を分割したものをウィンドウと呼びます。</para>
434                        <!--para>下の図では、フレームが一つで、ウィンドウが二つあります。</para>
435
436                        <figure id="emacs-frame-and-window">
437                                <title>emacsのフレームとウィンドウ</title>
438                                <graphic fileref="images/emacs-window.png" />
439                        </figure-->
440                </note>
441
442        </chapter>
443
444        <chapter id="emacs-entry">
445                <title>文字入力</title>
446                <para>ウィンドウにカーソルがある時、キーボードから入力した文字はカーソル位置に挿入され、カーソルが進みます。日本語を入力する時には、'C-\'で日本語切替えモードになります。 もう一度'C-\'を押すとアルファベットの入力モードに戻ります。</para>
447                <para>日本語入力システムについては、<ulink url="desktop-guide.html">デスクトップユーザーズガイド</ulink><ulink url="gnome-basic.html#input-ja">GUI環境での日本語入力</ulink>を参照して下さい。</para>
448
449                <para>TABキーを押すと行のインデントの調整となってしまい、TAB文字を入力出来ないことがあります。そのような時には、C-q TAB のように、C-q のあとでキーを押してください。</para>
450
451                <para>また、C-q C-j とすると、改行記号を入力できます。Enter キーの代わりに利用することで、<xref linkend="emacs-search" /> などの時に改行を含んだ文字列を扱うことができます。</para>
452        </chapter>
453       
454        <chapter id="emacs-cursol">
455                <title>カーソル移動</title>
456                <para>編集中のカーソルの移動は矢印キーの他、以下のようなキーで移動できます。</para>
457                <table id="keybind-for-move-cursor">
458                        <title>カーソル移動</title>
459                        <tgroup cols="2">
460                                <thead>
461                                        <row><entry>キー操作</entry><entry>意味</entry></row>
462                                </thead>
463                                <tbody>
464                                        <row><entry>C-b または ←</entry><entry>一文字左へ </entry></row>
465                                        <row><entry>C-f または →</entry><entry>一文字右へ</entry></row>
466                                        <row><entry>C-p または ↑</entry><entry>一文字上へ</entry></row>
467                                        <row><entry>C-n または ↓</entry><entry>一文字下へ</entry></row>
468                                        <row><entry>C-v または PgDn</entry><entry>次の画面に進む</entry></row>
469                                        <row><entry>M-v または PgUp</entry><entry>前の画面に戻る</entry></row>
470                                        <row><entry>C-d</entry><entry>カーソル位置の文字を削除</entry></row>
471                                        <row><entry>C-k</entry><entry>カーソル位置から行末までの文字を削除</entry></row>
472                                        <row><entry>C-e</entry><entry>行の一番右へ</entry></row>
473                                        <row><entry>C-a</entry><entry>行の一番左へ</entry></row>
474                                        <row><entry>M-f</entry><entry>一単語右へ</entry></row>
475                                        <row><entry>M-b</entry><entry>一単語左へ</entry></row>
476                                        <!--row><entry>M-g &lt;行番号&gt;</entry><entry>指定行へ移動 (xemacsのみ)</entry></row-->
477                                        <row><entry>M-x goto-line</entry><entry>指定行へ移動</entry></row>
478                                        <row><entry>C-space または C-@</entry><entry>現在のカーソル位置にマークをつけ記憶させる</entry></row>
479                                        <row><entry>C-x C-x</entry><entry>現在のカーソル位置にマークをつけ、前回マークをつけた位置まで戻る(繰り返すと二点を交互に行き来します)</entry></row>
480                                </tbody>
481                        </tgroup>
482                </table>
483        </chapter>
484
485        <chapter id="emacs-delete">
486                <title>文字削除</title>
487                <para>カーソル位置の文字の削除は C-d を用います。その他単語の削除や行末の削除等のキーもあります。</para>
488                <table id="keybind-for-delete-characters">
489                        <title>文字削除</title>
490                        <tgroup cols="2">
491                                <thead>
492                                        <row><entry>キー操作</entry><entry>意味</entry></row>
493                                </thead>
494                                <tbody>
495                                        <row><entry>C-d</entry><entry>カーソル位置の文字を削除</entry></row>
496                                        <row><entry>M-d</entry><entry>カーソル位置から一単語削除</entry></row>
497                                        <row><entry>C-k</entry><entry>カーソル位置から行末までの文字を削除</entry></row>
498                                        <row><entry>M-k</entry><entry>カーソル位置から文末までの文字を削除</entry></row>
499                                </tbody>
500                        </tgroup>
501                </table>
502        </chapter>
503
504        <chapter id="emacs-search">
505                <title>文字列検索・置換</title>
506                <para>カーソル行以降の文字列検索には、C-s を用います。C-s を入力するとミニバッファに
507                        <screen>I-search:</screen>
508                        と表示されるので、検索したい文字列を入力して下さい。検索の終了は C-g を押します。</para>
509                <para>一度入力した文字列を続けて検索したい時には、C-s を続けて2回押します。C-s の代わりに C-r を用いるとカーソル位置より前にある検索文字列を表示します。日本語の文字列を検索する場合<footnote><para>migemoという便利なツールがあります。<xref linkend="dot.emacs.my.el" />を参照してください。</para></footnote>は、C-sの後にEnterを押してから、C-\;でかな漢字変換モードにしてから入力して下さい。</para>
510                <para>確認付きの文字列の置換を行うには M-% を用います。M-% を入力すると
511                        <screen>Query-replace:</screen>
512                        とミニバッファに表示されますので、まず置換したい文字列を入力します。例えば, C言語プログラムでint を long にしたいときには、M-%の後に int と入力し、Enterキーを押します。ミニバッファの表示が以下のように代わるので、ここで long を入力し, Enterキーを押します。</para>
513                <screen>Query-replace int with: long</screen>
514                <para>置換する文字列 int があるとそこで、以下のように表示されます。</para>
515                <screen>Query-replace int with long: (? for help)</screen>
516                <para>ここで、スペースキーか'y'を押せば置換が行われ、'n'を押すと置換は行わず、次の候補に移動します。終了するときには、Enterキーか'q'を入力します。上に表示されている通り '?' を入力すればコマンドのリストが表示されます。</para>
517                <para>文字列の置換を確認なしに一括して行いたいときには、まず一括置換を開始したい場所にカーソルを移動し、M-x を押します。このとき、ミニバッファの表示は以下のようになります。</para>
518                <screen>M-x</screen>
519                <para>ここで、<userinput>replace-string</userinput> と入力し、<keycap>Enter</keycap>キーを押します。</para>
520                <screen>M-x replace-string</screen>
521                <para>その後は、確認のある場合の文字列置換の場合と同様に、置換のための文字列を入力すれば、一括置換が行われます。</para>
522                <para>emacs には replace-string の他、非常にたくさんのコマンドがあり、M-x は、このコマンドを入力するのに使われます。コマンドの名前はTabキーで補完しながら入力することができます。候補のコマンドが複数あるときには、候補一覧が表示されます。</para>
523                <table id="keybind-for-search-and-replace">
524                        <title>文字列検索・置換</title>
525                        <tgroup cols="2">
526                                <thead>
527                                        <row><entry>キー操作</entry><entry>意味</entry></row>
528                                </thead>
529                                <tbody>
530                                        <row><entry>C-s</entry><entry>文字検索 (カーソル行以降で検索)</entry></row>
531                                        <row><entry>C-r</entry><entry>文字検索 (カーソル行より前で検索)</entry></row>
532                                        <row><entry>M-%</entry><entry>文字列置換(確認あり)</entry></row>
533                                        <row><entry>M-x replace-string</entry><entry>文字列置換(確認なし)</entry></row>
534                                </tbody>
535                        </tgroup>
536                </table>
537        </chapter>
538
539        <chapter id="emacs-undo">
540                <title>アンドゥ (取消)</title>
541                <para>実行したコマンドを取り消して、バッファを元の状態に戻すには、C-x u (または C-_ )を用います。連続して C-x u を用いると、実行した回数だけ前の状態に戻ります。</para>
542                <table id="keybind-for-undo">
543                        <title>アンドゥ (取消)</title>
544                        <tgroup cols="2">
545                                <thead>
546                                        <row><entry>キー操作</entry><entry>意味</entry></row>
547                                </thead>
548                                <tbody>
549                                        <row><entry>C-x u または C-_</entry><entry>アンドゥ(実行したコマンドの取消)</entry></row>
550                                </tbody>
551                        </tgroup>
552                </table>
553        </chapter>
554
555        <chapter id="emacs-edit">
556                <title>カット/コピー/ペースト</title>
557                <para>編集中のバッファの一部分を別の場所にコピーするには以下のような手順で行います。</para>
558                <orderedlist>
559                        <listitem><para>コピーしたい部分の先頭にカーソルを移動します。</para></listitem>
560                        <listitem><para>C-Space (または C-@)を入力します(これで現在のカーソルの位置が記憶されます)。</para></listitem>
561                        <listitem><para>コピーしたい部分の終りまたは始めにカーソルを移動します。</para></listitem>
562                        <listitem><para>M-w を押す(これで先頭位置(C-Spaceを押した位置)からこの終りの部分までが記憶されます。この部分をリージョン(region:領域)と呼びます。)</para></listitem>
563                        <listitem><para>コピー先にカーソルを移動します。</para></listitem>
564                        <listitem><para>C-y を入力します。これでペースト(Emacsではyank(ヤンク)といいます)完了です。</para></listitem>
565                </orderedlist>
566                <para>一部分を削除したい時には、上のコピーの手続きで、M-w を入力するかわりに、C-w を入力すれば、設定したリージョンは削除され、記憶されます。</para>
567                <para>一部分を移動したい時には、上の手続きで削除を行った後、移動先へカーソルを持って行きコピーの場合と同様に C-y を入力すれば、記憶されているリージョンがそこに出力されます。</para>
568
569                <table id="keybind-for-kill-and-yank">
570                        <title>カット/コピー/ペースト</title>
571                        <tgroup cols="2">
572                                <thead>
573                                        <row><entry>キー操作</entry><entry>意味</entry></row>
574                                </thead>
575                                <tbody>
576                                        <row><entry>C-space または C-@</entry><entry>始点のマーク</entry></row>
577                                        <row><entry>M-w</entry><entry>始点から現在のカーソル位置までを記憶(コピー)</entry></row>
578                                        <row><entry>C-w</entry><entry>始点から現在のカーソル位置までを削除して記憶(カット)</entry></row>
579                                        <row><entry>C-y</entry><entry>記憶内容をカーソル位置に貼付け(ペースト)</entry></row>
580                                </tbody>
581                        </tgroup>
582                </table>
583        </chapter>
584
585        <chapter id="emacs-window">
586                <title>ウィンドウ操作</title>
587                <para>複数のファイルを編集する場合には、ウィンドウを複数開いて、各ウィンドウに、同じバッファの異なる位置を表示したり、複数のバッファを表示したりして編集することができます。</para>
588                <para>例えば C-x 2 を入力するとカーソルのあるウィンドウが上下2つに分割されます。もとの通り分割されたウィンドウを一つに戻すには、C-x 1 を入力すれば、カーソルのあるほうのウィンドウのみの表示になります。分割したウィンドウ間のカーソル移動には C-x o を用います。分割したウィンドウの境界はマウスでドラッグすれば移動することもできます。</para>
589                <para>また、C-x 5 2 を入力すると、新しいフレーム(参照<xref linkend="emacs-buffer" />)がつくられます。複数のフレーム間のカーソル移動には C-x 5 o を用います。</para>
590                <para>現在のウィンドウに表示するバッファを変更したい時には C-x b を入力すると, 以下のように表示されます。</para>
591                <screen>Switch to buffer: (default test.txt)</screen>
592                <para>ここで、ウィンドウに表示したいバッファ名を入力し、Enterキーを押せば表示バッファが切り替わります。ここで、候補のバッファの一つが上のように default の後ろに表示されます。この候補でよいときには単にEnterキーを押して下さい。</para>
593                <table id="keybind-for-window-and-frame">
594                        <title>ウィンドウ操作</title>
595                        <tgroup cols="2">
596                                <thead>
597                                        <row><entry>キー操作</entry><entry>意味</entry></row>
598                                </thead>
599                                <tbody>
600                                        <row><entry>C-x 2</entry><entry>ウィンドウを上下に分割</entry></row>
601                                        <row><entry>C-x 3</entry><entry>ウィンドウを左右に分割</entry></row>
602                                        <row><entry>C-x o</entry><entry>分割したウィンドウ間をカーソル移動</entry></row>
603                                        <row><entry>C-x 0</entry><entry>分割したウィンドウのうちカーソルのあるほうを閉じる</entry></row>
604                                        <row><entry>C-x 1</entry><entry>分割したウィンドウのうちカーソルの無いほうを閉じる</entry></row>
605                                        <row><entry>C-x +</entry><entry>分割したウィンドウの高さ、幅を均等にする</entry></row>
606                                        <row><entry>C-x 5 2</entry><entry>新しいフレームを開く</entry></row>
607                                        <row><entry>C-x 5 o</entry><entry>フレーム間でカーソル移動</entry></row>
608                                        <row><entry>C-x 5 0</entry><entry>カーソルのあるフレームを閉じる</entry></row>
609                                        <row><entry>C-x b</entry><entry>現在のウィンドウに表示するバッファを指定する</entry></row>
610                                </tbody>
611                        </tgroup>
612                </table>
613        </chapter>
614
615        <chapter id="emacs-filelist">
616                <title>ファイル一覧ウィンドウでの操作</title>
617                <para>C-x C-b で編集中のバッファの一覧が表示されます。この一覧表示をしてるウィンドウに C-x o で移動すると、各バッファについていろいな操作を行えます。カーソルの移動は、編集時と同様に C-n, C-p なども使えますが、この一覧表示のバッファでは単に n や p でも移動できます。</para>
618                <para>ウィンドウに表示したいバッファ名の位置にカーソルを移動し、1 を入力するとウィンドウにはそのバッファの内容が表示されます。その他、削除マークや保存マーク等をつけて、一括して削除や保存と言った作業も行えます。できる操作の一覧は「?」で表示されます。</para>
619                <table id="keybind-for-buffer-menu">
620                        <title>ファイル一覧ウィンドウでの操作</title>
621                        <tgroup cols="2">
622                                <thead>
623                                        <row><entry>キー操作</entry><entry>意味</entry></row>
624                                </thead>
625                                <tbody>
626                                        <row><entry>n</entry><entry>カーソルを次の行へ進める</entry></row>
627                                        <row><entry>p</entry><entry>カーソルを前の行へ戻す</entry></row>
628                                        <row><entry>1</entry><entry>カーソル行のバッファを現在のウィンドウいっぱいに表示する</entry></row>
629                                        <row><entry>f</entry><entry>カーソル行のバッファを現在のウィンドウに表示する</entry></row>
630                                        <row><entry>d</entry><entry>カーソル行のバッファに削除マークをつける</entry></row>
631                                        <row><entry>s</entry><entry>カーソル行のバッファに保存マークをつける</entry></row>
632                                        <row><entry>x</entry><entry>削除マークのあるバッファを削除し、保存マークのあるバッファをファイルに保存する</entry></row>
633                                        <row><entry>u</entry><entry>バッファについているマークを消します。</entry></row>
634                                </tbody>
635                        </tgroup>
636                </table>
637        </chapter>
638
639        <chapter id="emacs-customize">
640                <title>Emacs のカスタマイズについて</title>
641                <para>Emacs をカスタマイズしていくには、Emacs が持っているカスタマイズの仕組みを利用するのと、自分で設定ファイルに設定や関数などを書いていくという二つの方法があります。</para>
642
643                <!--para>Emacs,XEmacs の設定ファイルは <filename>~/.emacs</filename> で、そこから分岐して、Emacs では <filename>~/.emacs.el</filename> を、XEmacs では <filename>~/.xemacs/init.el</filename> を読み込むようになっています。</para-->
644                <para>Emacs の設定ファイルは <filename>~/.emacs</filename> でそこから<filename>~/.emacs.el</filename> を読み込むようになっています。</para>
645                <para>Emacs の設定ファイル<filename>~/.emacs.el</filename> は、さらに、さまざまなファイルを読み込むようになっています。</para>
646
647                <para>フォントや色の設定のために、<filename>~/.emacs-faces.el</filename> と <filename>~/.emacs-fontset.el</filename> を読み込んでいます。</para>
648
649                <para>Mew の設定のために、<filename>~/.mew.el</filename> を読み込んでいます。</para>
650                <para>Mew については、<ulink url="mew.html">メールクライアント Mew</ulink> を参照してください。</para>
651
652                <para>その他の設定のために、<filename>~/.emacs.my.el</filename> を読み込みます。</para>
653
654                <para><filename>~/.emacs.el</filename> , <filename>~/.emacs-faces.el</filename> , <filename>~/.emacs-fontset.el</filename> , <filename>~/.mew.el</filename> は、あらかじめ用意されているものを書き換える、といった方法でカスタマイズしていきます。</para>
655                <para><filename>~/.emacs.my.el</filename> は、用意されていません。自分で作成し、その他の設定や、関数の定義などを記述していきます。</para>
656
657                <sect1 id="utils-1-10-1">
658                        <title>設定ファイルに書き込んでいく場合 1</title>
659
660                        <example id="dot.emacs-faces.el">
661                                <title>Emacsのフォントの設定</title>
662
663                                <para>フォントの大きさの設定をするには、<filename>~/.emacs-faces.el</filename> を編集します。</para>
664                                <para>11行〜17行のところにフォントやウィンドウサイズの設定があります。(行頭の数字は説明のためにつけた行番号です。参照<ulink url="#emacs-filename-with-linenumber">行番号をあらかじめ指定してファイルを開く</ulink>)</para>
665                                <screen>11              (load "~/.emacs-fontset.el")
66612              (setq default-frame-alist
66713                    (append
66814                     '((font . "<emphasis><replaceable>fontset-14</replaceable></emphasis>") ;; デフォルトフォントセット
66915                       ;(width . 80) (height . 40) ;; ウィンドウサイズ
67016                       )
67117                     default-frame-alist))))</screen>
672                                <para>14行目の fontset-14 という部分の 14 のところを 10 12 14 16 18 20 22 24 の中から選ぶことができます。(これらは、<filename>~/.emacs-fontset.el</filename> の中で定義されています。)</para>
673                                <para>fontset-18にするには、次のようにします。</para>
674                                <screen>                     ;'((font . "<emphasis>fontset-14</emphasis>") ;; デフォルトフォントセット
675                     '((font . "<emphasis>fontset-18</emphasis>")</screen>
676                                <para>14行目の最初に ; をつけてコメント(無効)にします。そのあと、次の行に fontset-18 に書き換えた行を追加します。</para>
677
678                                <para>15行目のウィンドウサイズの設定の部分はコメント(無効)となっています。前回終了時のウィンドウサイズを記録しておく機能が GNOME などにはあるのでコメントのままでよいと思います。「;」をのぞいて有効にすると、毎回、起動時に指定したサイズに調整されるようになります。</para>
679
680                                <para>また、コンソールやGNOME端末内で起動する際には、同じファイル(<filename>~/.emacs-faces.el</filename>) の 54行〜58行の部分に設定があり、背景色と文字色の設定ができます。</para>
681                                <screen>54        (if (not window-system)
68255            (progn
68356              ;; 非X環境での色設定
68457              (set-face-background 'default "<emphasis><replaceable>000000</replaceable></emphasis>")
68558              (set-face-foreground 'default "<emphasis><replaceable>ffffff</replaceable></emphasis>")))</screen>
686                                <para>000000 や ffffff のところを必要に応じて書き換えてください。</para>
687
688                                <para>設定ファイルを書き換えたら、M-x eval-current-buffer と入力すると、現在開いているバッファ(設定ファイル)を評価することができます。文法のチェックや設定の適用などが行われるので、保存する前後で確認しておくと良いでしょう。</para>
689
690                        </example>
691                </sect1>
692
693                <sect1 id="utils-1-10-2">
694                        <title>設定ファイルに書き込んでいく場合 2</title>
695
696                        <para>設定や定義する関数などを、コメントと一緒に <filename>~/.emacs.my.el</filename> に記述していきます。</para>
697                        <para>Emacs を起動したら C-x C-f と入力し、ミニバッファーに Find file: と表示されたら ~/.emacs.my.el と入力し Enter キーを押してください。</para>
698                       
699                        <para>ブラウザなどで下の例をドラッグして選択(コピー)しておき、Emacs で C-y として yank(ペースト)します。</para>
700                        <para>注釈のために 6ヶ所、行末に 1から6までの数字がありますが、その数字は消してください。</para>
701                        <para>C-x C-s で保存します。</para>
702                       
703                        <example id="dot.emacs.my.el">
704                                <title>Emacs の設定ファイル ~/.emacs.my.el の例</title>
705
706                                <screen>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <co id="comment" />
707;;                       Time-stamp: &lt;&gt; <co id="time-stamp" />
708;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
709
710;; 設定の例
711
712;; 起動時に splash-screen を表示しないようにする。
713;; emacs --no-splash
714;; M-x display-splash-screen で表示。
715(setq inhibit-startup-message t) <co id="no-splash" />
716
717;; M-x shell での ls 等の color での表示のための設定
718(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
719
720;; migemo を有効にする
721(load "migemo") <co id="load" />
722
723;; 複数のマーク地点 (C-Space,C-@) を利用するための設定 Emacs-22以上で利用可能
724;; C-x C-@ や C-x C-Space でさらに前のマーク地点にまで戻れる。
725(if (string-match "22." emacs-version)
726    (setq set-mark-command-repeat-pop t)
727  )
728
729;; 関数などのヘルプを参照した時に、
730;; lisp ファイルではなく Emacs自体のソースで定義されている場合に
731;; ソースを参照するための設定 Emacs-22以上で利用可能
732;; emacs の src.rpm をインストールし、rpmbuild -bp *spec まで実行しておく。
733;; 以下は root で emacs22-22.0.50-0.20060403vl2.src.rpm をインストールした場合のパス。
734(if (string-match "22." emacs-version)
735    (setq find-function-C-source-directory "/usr/src/vine/BUILD/emacs-22.0.50.20060403/src")
736  )
737
738;; 関数定義の例
739
740;; migemo の on/off 切替えと isearch-forward の実行 "\C-,"
741(defun my-search-toggle-migemo-isearch-forward () <co id="defun" />
742  "migemo-toggle-isearch-enable と isearch-forward の実行"
743  (interactive)
744  (migemo-toggle-isearch-enable)(isearch-forward)
745  )
746(global-set-key (kbd "C-,") 'my-search-toggle-migemo-isearch-forward) <co id="global-set-key" />
747
748;; migemo の on/off 切替えと isearch-backward の実行 "\C-."
749(defun my-search-toggle-migemo-isearch-backward ()
750  "migemo-toggle-isearch-enable と isearch-backward の実行"
751  (interactive)
752  (migemo-toggle-isearch-enable)(isearch-backward)
753  )
754(global-set-key (kbd "C-.") 'my-search-toggle-migemo-isearch-backward)
755
756;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
757;; Local Variables: <co id="local_variables" />
758;; mode: emacs-lisp
759;; encode: euc-jp-unix
760;; End:</screen>
761
762                                <calloutlist>
763                                        <callout arearefs="comment">
764                                                <para>Emacs の設定ファイルでは、「;」という文字があると、その行の ; 以降の部分はコメントとされ、無視されます。</para>
765                                        </callout>
766                                        <callout arearefs="time-stamp">
767                                                <para>Time-stamp: &lt;&gt; という部分は、ファイルを保存すると &lt;&gt; の部分に日時とユーザ名が入り、保存する度に自動的に更新されます。このファイル(<filename>~/.emacs.my.el</filename>)の更新日時を自動的に記録するというだけで、他のファイル等への影響はありません。</para>
768                                        </callout>
769                                        <callout arearefs="no-splash">
770                                                <para>(setq inhibit-startup-message t) という部分で、起動時の splash screen を表示しないようにしています。</para>
771                                                <para>これで、Emacs を起動した時に、すぐにファイルの内容が表示されるようになります。</para>
772                                                <para>Emacs で用いられている lisp という言語では、t と nil が 真(肯定) と 偽(否定) として用いられます。もともとは nil となっているものなので t の部分を nil と書き換えると、起動時に splash screen が表示されるようになります。</para>
773                                        </callout>
774                                        <callout arearefs="load">
775                                                <para>load というものを使って、migemo というものを読み込んでいます。</para>
776                                                <para>migemo は、ローマ字で入力すると日本語も検索<footnote><para>「tatoeba」と入力すると「tatoeba」という文字だけでなく、「たとえば」「タトエバ」「例えば」といったようなものも検索することができます。migemo というパッケージをインストールする必要があります。</para></footnote>できるツールで、load しておくと、C-s と C-r での検索時に migemo での検索が用いられるようになります。</para>
777                                        </callout>
778                                        <callout arearefs="defun">
779                                                <para>Emacs では defun というものを使って関数を定義することが出来ます。</para>
780                                                <para>ここでは migemo を用いた検索と、通常の検索を切り替え、切り替えた後に検索を開始するという関数 my-search-toggle-migemo-isearch-forward を定義しています。</para>
781                                        </callout>
782                                        <callout arearefs="global-set-key">
783                                                <para>ここでは、defun で定義した my-search-toggle-migemo-isearch-forward という関数に、global-set-key というものを使って C-, というキーバインドを割り当てています。</para>
784                                        </callout>
785                                        <callout arearefs="local_variables">
786                                                <para>ここには、このファイルの形式などの情報を書いておきます。</para>
787                                                <para>Local Variables: から End : までの部分は、このファイルを Emacs で開いたときに参照されます。</para>
788                                        </callout>
789                                </calloutlist>
790                        </example>
791                       
792                </sect1>
793
794                <sect1 id="utils-1-10-3">
795                        <title>Emacsが持っているカスタマイズの仕組みを利用する場合</title>
796
797                        <note>
798                                <para>設定ファイル<filename>~/.emacs.el</filename> <filename>~/.emacs-faces.el</filename> <filename>~/.mew.el</filename> などに書かれている項目を設定する場合は、設定ファイルを直接編集してください。</para>
799                        </note>
800
801                        <para>Emacs を起動して、M-x customize と入力すると<xref linkend="emacs-M-x-customize"/>のようなカスタマイズの画面になります。</para>
802
803                        <para>TABキーを押すことで、アンダーラインのある部分、ボタンになっている部分(Set for Current Session や Go to Group など)、文字の入力が可能な部分にカーソルが移動します。Shift+TAB でカーソルが逆方向(上)に移動します。Enterキーで選択、確定です。Finish を選択すると、閉じます。</para>
804
805                        <figure id="emacs-M-x-customize">
806                                <title>EmacsのCustomize画面</title>
807                                <graphic fileref="images/emacs-M-x-customize.png" />
808                        </figure>
809
810                        <para>ここで操作して設定した内容は、<filename>~/.emacs.el</filename> に書き込まれます。</para>
811                       
812                        <para>あらかじめ <filename>~/.emacs.el</filename> の最後のほうに次のように記述しておくと、設定を書き出す専用のファイルを用意することができます。</para>
813                       
814                        <screen>;; customize の出力先
815(setq custom-file "<filename>~/.emacs.my.custom.el</filename>")
816(if (file-exists-p (expand-file-name "~/.emacs.my.custom.el"))
817    (load (expand-file-name custom-file) t nil nil))</screen>
818               
819                        <para><filename>~/.emacs.my.custom.el</filename> は、用意されていませんので、自分で作成します。</para>
820               
821                        <para>次のようなファイルを作成しておくとよいでしょう。</para>
822                        <screen>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
823;;                       Time-stamp: &lt;&gt;
824;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</screen>
825
826                        <para>Time-stamp などはなくてもいいです。空のファイルでもかまいません。</para>
827
828                        <para>なお、customize は、細分化されていて、M-x customize     の他に、M-x customize-face , M-x customize-group , M-x customize-variable などと様々なものがあります。M-x customize と入力して TABキーを押してみるとよいでしょう。</para>
829                       
830                        <example id="customize-variable">
831                                <title>Emacs の TAB の幅を設定する</title>
832                                <para>ここでは、M-x customize-variable を利用して TABの幅 を設定してみます。</para>
833                                <para>M-x customize-variable と入力し Enterキーを押します。(TABキーで補完ができます。M-x cus くらいまで入力したら TABキーをおしてみてください。M-x customize となるはずです。さらに -v と入力して TABキーを押すと M-x customize-variable と補完されると思います。)</para>
834                                <para>画面最下部のミニバッファに Customize variable: と表示されたら、tab-width と入力し Enterキーを押します。(これも TABキーで補完が出来ます。)</para>
835                               
836                                <para><xref linkend="emacs-M-x-customize-variable" />のように画面が切り替わります。
837
838                                <figure id="emacs-M-x-customize-variable">
839                                        <title>emacsの customize-variable の画面</title>
840                                        <graphic fileref="images/emacs-M-x-customize-variable.png" />
841                                </figure>
842        </para>
843
844                                <para>TABキーを押して、8 という数字が表示されているところまでカーソルを移動し、C-d で8という文字を削除し、数字を入力します。たとえば 4 とすると、TAB の幅が元の幅の半分になります。</para>
845                                <para><guibutton>Set for Current Session</guibutton> というボタンのところまで移動し、Enterキーを押すと、一時的に設定を有効にした状態になります。数値は保存されないので、次回起動時には元の値 8 にもどります。</para>
846                                <para><guibutton>Save for Future Sessions</guibutton> のボタンで Enterキーを押すと、この数値が、設定ファイルに書き込まれて保存され、次回 Emacs を起動した時に利用できるようになります。</para>
847                                <para><guibutton>Reset</guibutton> のボタンで、入力した数値がもとにもどります。</para>
848                                <para><guibutton>Reset to Saved</guibutton> のボタンで、前回保存した時の値にもどります。</para>
849                                <para><guibutton>Erase Customization</guibutton> のボタンで、設定した数値が取り消され、設定ファイルにあった記述も削除されます。</para>
850
851                                <para>数値を入力し、<guibutton>Set for Current Session</guibutton> のボタンを押してテストして、適当な値になるまで customize を行うという作業を繰り返して、それから <guibutton>Save for Future Sessions</guibutton> で保存するという作業をします。</para>
852                               
853                                <para>ここでは、<guibutton>Save for Future Sessions</guibutton> で保存してしまっていいと思います。</para>
854                               
855                                <para>保存したら、<guibutton>Finish</guibutton> のボタンをクリックします。M-&lt; でページの先頭まで戻ると早いです。</para>
856
857                                <para><guibutton>Save for Future Sessions</guibutton> で保存すると、customize の出力先として設定したファイル(<filename>~/.emacs.my.custom.el</filename>)に、設定していなければ <filename>~/.emacs.el</filename> に次のように書き込まれます。</para>
858
859                                <screen>(custom-set-variables
860  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
861  ;; Your init file should contain only one such instance.
862 '(server-switch-hook (quote (raise-frame)))
863 '(tab-width 4))
864(custom-set-faces
865  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
866  ;; Your init file should contain only one such instance.
867 )</screen>
868
869                                <para>don't edit or cut/paste it! と書かれているので、この設定値を変更する時には、直接編集するのではなく M-x customize などを使って再度設定するようにしてください。</para>
870                        </example>
871               
872                </sect1>
873
874        </chapter>
875
876</book>
Note: See TracBrowser for help on using the repository browser.