Emacs 利用ガイド Munehiro Yamamoto Masaharu Iwai Vine Linux 5 の Emacs(以下、Emacs は GNU Emacs を指す)環境は、 Vine Linux 4.2 までのそれと比べて、大幅に変更されています。 このドキュメントは、新しく搭載された system-wide な設定および vine-default を中心に解説します。 Emacs を始めよう! Emacs の起動画面を使いながら、Emacs の基本事項や基本操作を説明します。 Emacs を起動 ToDo: Emacs 23.X の起動画面をスクリーンショットする。 メニューからバッファ、ミニバッファなどの説明を図説する。 バッファ Emacs では、編集中の文書はバッファと呼ばれるメモリ領域に読み込まれ、このバッファの内容に対して書き込みや修正を行います。ファイルに保存する命令を実行した時にはじめて、バッファの内容はディスク上のファイルに書き込まれます。 バッファの内容はウィンドウに表示されます。ウィンドウは複数用意することができ、そこに複数のバッファの内容や、同じバッファの違う部分を表示して編集を行うことができます。 バッファの編集状況等の情報は、ウィンドウの最下部のモードラインに表示されます。 ウィンドウという言葉について 一般的な「ウィンドウ」という言葉と、emacs での「ウィンドウ」は異なります。 一般的なウィンドウは emacs ではフレームといい、一つのフレームの中を分割したものをウィンドウと呼びます。 文字入力 ウィンドウにカーソルがある時、キーボードから入力した文字はカーソル位置に挿入され、カーソルが進みます。日本語を入力する時には、'C-\'で日本語切替えモードになります。 もう一度'C-\'を押すとアルファベットの入力モードに戻ります。 日本語入力システムについては、デスクトップユーザーズガイドGUI環境での日本語入力を参照して下さい。 TABキーを押すと行のインデントの調整となってしまい、TAB文字を入力出来ないことがあります。そのような時には、C-q TAB のように、C-q のあとでキーを押してください。 また、C-q C-j とすると、改行記号を入力できます。Enter キーの代わりに利用することで、 などの時に改行を含んだ文字列を扱うことができます。 カーソル移動 編集中のカーソルの移動は矢印キーの他、以下のようなキーで移動できます。 カーソル移動 キー操作意味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-x goto-line指定行へ移動C-space または C-@現在のカーソル位置にマークをつけ記憶させるC-x C-x現在のカーソル位置にマークをつけ、前回マークをつけた位置まで戻る(繰り返すと二点を交互に行き来します)
文字削除 カーソル位置の文字の削除は C-d を用います。その他単語の削除や行末の削除等のキーもあります。 文字削除 キー操作意味C-dカーソル位置の文字を削除M-dカーソル位置から一単語削除C-kカーソル位置から行末までの文字を削除M-kカーソル位置から文末までの文字を削除
文字列検索・置換 カーソル行以降の文字列検索には、C-s を用います。C-s を入力するとミニバッファに I-search: と表示されるので、検索したい文字列を入力して下さい。検索の終了は C-g を押します。 一度入力した文字列を続けて検索したい時には、C-s を続けて2回押します。C-s の代わりに C-r を用いるとカーソル位置より前にある検索文字列を表示します。日本語の文字列を検索する場合migemoという便利なツールがあります。を参照してください。は、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キーで補完しながら入力することができます。候補のコマンドが複数あるときには、候補一覧が表示されます。 文字列検索・置換 キー操作意味C-s文字検索 (カーソル行以降で検索)C-r文字検索 (カーソル行より前で検索)M-%文字列置換(確認あり)M-x replace-string文字列置換(確認なし)
アンドゥ (取消) 実行したコマンドを取り消して、バッファを元の状態に戻すには、C-x u (または C-_ )を用います。連続して C-x u を用いると、実行した回数だけ前の状態に戻ります。 アンドゥ (取消) キー操作意味C-x u または C-_アンドゥ(実行したコマンドの取消)
カット/コピー/ペースト 編集中のバッファの一部分を別の場所にコピーするには以下のような手順で行います。 コピーしたい部分の先頭にカーソルを移動します。 C-Space (または C-@)を入力します(これで現在のカーソルの位置が記憶されます)。 コピーしたい部分の終りまたは始めにカーソルを移動します。 M-w を押す(これで先頭位置(C-Spaceを押した位置)からこの終りの部分までが記憶されます。この部分をリージョン(region:領域)と呼びます。) コピー先にカーソルを移動します。 C-y を入力します。これでペースト(Emacsではyank(ヤンク)といいます)完了です。 一部分を削除したい時には、上のコピーの手続きで、M-w を入力するかわりに、C-w を入力すれば、設定したリージョンは削除され、記憶されます。 一部分を移動したい時には、上の手続きで削除を行った後、移動先へカーソルを持って行きコピーの場合と同様に C-y を入力すれば、記憶されているリージョンがそこに出力されます。 カット/コピー/ペースト キー操作意味C-space または C-@始点のマークM-w始点から現在のカーソル位置までを記憶(コピー)C-w始点から現在のカーソル位置までを削除して記憶(カット)C-y記憶内容をカーソル位置に貼付け(ペースト)
ウィンドウ操作 複数のファイルを編集する場合には、ウィンドウを複数開いて、各ウィンドウに、同じバッファの異なる位置を表示したり、複数のバッファを表示したりして編集することができます。 例えば C-x 2 を入力するとカーソルのあるウィンドウが上下2つに分割されます。もとの通り分割されたウィンドウを一つに戻すには、C-x 1 を入力すれば、カーソルのあるほうのウィンドウのみの表示になります。分割したウィンドウ間のカーソル移動には C-x o を用います。分割したウィンドウの境界はマウスでドラッグすれば移動することもできます。 また、C-x 5 2 を入力すると、新しいフレーム(参照)がつくられます。複数のフレーム間のカーソル移動には C-x 5 o を用います。 現在のウィンドウに表示するバッファを変更したい時には C-x b を入力すると, 以下のように表示されます。 Switch to buffer: (default test.txt) ここで、ウィンドウに表示したいバッファ名を入力し、Enterキーを押せば表示バッファが切り替わります。ここで、候補のバッファの一つが上のように default の後ろに表示されます。この候補でよいときには単にEnterキーを押して下さい。 ウィンドウ操作 キー操作意味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 を入力するとウィンドウにはそのバッファの内容が表示されます。その他、削除マークや保存マーク等をつけて、一括して削除や保存と言った作業も行えます。できる操作の一覧は「?」で表示されます。 ファイル一覧ウィンドウでの操作 キー操作意味nカーソルを次の行へ進めるpカーソルを前の行へ戻す1カーソル行のバッファを現在のウィンドウいっぱいに表示するfカーソル行のバッファを現在のウィンドウに表示するdカーソル行のバッファに削除マークをつけるsカーソル行のバッファに保存マークをつけるx削除マークのあるバッファを削除し、保存マークのあるバッファをファイルに保存するuバッファについているマークを消します。
Vine Linux 5 の Emacs Vine Linux 5 の Emacs は、 Vine Linux 4.2 など従来の Vine Linux のEmacs と比べて大幅に変更されました。 従来の Vine Linux では、システム全体での設定 (system-wide な設定) を RPM パッケージに含まれている設定と異なるものにする場合、 その RPM パッケージがアップデートされるたびに修正する必要がありました。 Vine Linux 5.0 で導入された仕組みにより、 個別の RPM パッケージに含まれている設定 (distribution-wide な設定) とシステム全体での設定 (system-wide な設定) を別のファイルに記述するようになりました。 システム全体での設定 (system-wide な設定) を変更していた場合、 RPM パッケージをアップデートしても内容をそのまま保持するようになっています。 Vine Linux 5 では、次の順で設定が読み込まれます。 個別の RPM パッケージでの設定 (distribution-wide な設定) システム全体での設定 (system-wide な設定) ユーザごとの設定 同一の設定項目について、それぞれで設定している場合は後から読み込まれる設定が有効となります。 また、システム全体での設定 (system-wide な設定) は RPM パッケージのアップデートで置き換えられてしまうことはありません。 そのため、個別の RPM パッケージでの設定 (distribution-wide な設定) を system-wide な設定で上書きすることが可能となっています。 system-wide な設定 Vine Linux 5.0 以降の Emacs では、 従来よりも、システム全体の設定 (system-wide な設定) をより記述しやすくなりました。 system-wide な設定ファイルは、 Emacs のメジャーバージョンが XX の場合、 /etc/emacs/emacs-XX-local.el に配置されています。 Emacs-XX を起動したとき、もし /etc/emacs/emacs-XX-local.el が存在すれば、 site-start.el の一番最後に読み込まれます。 したがって、distribution-wide な設定よりも emacs-XX-local.el が優先されます。 Vine Linux のデフォルト設定:vine-default Vine Linux の Emacs では、 Emacs 上で動作するアプリケーションの RPM パッケージに初期設定が含まれています。 そのため、 ユーザ初期設定ファイル ~/.emacs.el に何も設定を記述しなくても、 そのアプリケーションがある程度使えるようになっています。 この Emacs における Vine Linux のデフォルト設定を vine-default と呼んでいます。 使い方 vine-default は、/usr/share/emacs-23.x/site-lisp 以下に格納されています。 vine-default-base.el:Emacs の基本的な設定 vine-default-faces.el:Emacs のフォントやカラーの設定 package/vine-default-package.el:package の設定 Emacs を起動すると、 デフォルトで vine-default の boolean が t になっているので、 vine-default を読み込みます。 もし vine-default をすべて無効にしたい場合は、~/.emacs.el (setq vine-default nil) を設定します。 この場合は、メニューバーと言語ロケール以外は何も設定されていません。 vine-default のうち、いくつかの設定を無効にすることができます。 各 vine-default は、vine-default-name の boolean が定義されていて、 デフォルトでは t になっています。 例えば、 vine-default-base, vine-default-faces, vine-default-yatex, vine-default-mew を無効にしたい場合は、 ~/.emacs.el (setq vine-default-base nil vine-default-faces nil vine-default-yatex nil vine-default-mew nil ) を設定します。 いくつかの Emacs Lisp パッケージのみを有効にしたいときは、 一旦すべての vine-default を無効にした上で、 いくつかの vine-default を有効にしてください。 例えば、 vine-default.yatex, vine-default-tamago のみを有効にしたい場合は、 ~/.emacs.el (setq vine-default nil) (requires 'vine-default-yatex) (requires 'vine-default-tamago) を設定します。 設定されている vine-default の閲覧 Emacs 上からインストールされている elisp パッケージにあらかじめ設定されている vine-default の設定を閲覧できます。 Emacs 上で M-x show-vine-default を実行すると、 起動している Emacs のバージョンに対応した vine-default の設定を閲覧できます。 高度な使い方 vine-default での設定を上書きしたい場合はフックを使います。 例えば、vine-default で set-frame-font には次のように「Monospace 12」が設定されていたとします。 (if window-system (set-frame-font "Monospace 12")) これを ~/.emacs.el で変更したい場合は after-vine-default-setup-hook をフックしてください。 (add-hook 'after-vine-default-setup-hook (lambda () (if window-system (set-frame-font "Monospace 10")))) 上記はあくまで一例として紹介しましたが、 フォントの設定を変更したい方は、現実的には、 vine-default-faces 自体を使わないと思われますので、~/.emacs.el (setq vine-default-faces nil) (unless vine-default-faces (if window-system (set-frame-font "DejaVu Sans Mono 10"))) のように、 vine-default-faces を無効にしておいてフォントの設定をしても良いです。 また、各 vine-default で設定されていない項目についてはフックせずに、 そのまま ~/.emacs.el に記述しても有効です。 vine-default で何が設定されているのかをよく理解していない場合は、 とりあえず after-vine-default-setup-hook へフックしてしまっても問題ありません。 そのため、別のファイル .emacs-misc.el にまとめてしまい、 以下のようにして ~/.emacs.el でフックして読み込ませてしまっても良いです。 (add-hook 'after-vine-default-setup-hook (lambda () (load (expand-file-name "~/.emacs.misc.el") nil t nil) )) この仕組みの詳細については を参照してください。 IME Vine Linux の Emacs 上におけるデフォルトの IME は、 X 上におけるそれと連動して、setimeコマンドなどで設定される環境変数 EMACS_IME で決定されます Vine Linux 5 の初期設定では、各ユーザのホームディレクトリに作成される ~/.XresourcesEmacs*useXIMの値として falseが設定されているため、XIMは使われません。 Vine Linux 5 での初期設定では、tamago パッケージがインストールされている場合は tamago の Anthy インタフェースが使われます。 tamago パッケージをインストールしていない場合は emacs パッケージに同梱されている LEIM (Library of Emacs Input Method) が使われます。 LEIM では Vine Linux 5 標準のかな漢字変換システム Anthy を使いませんので、 変換効率が低くなってしまいます。 環境変数 EMACS_IME と異なる IME を使いたい場合は、~/.emacs.elemacs-ime の値に指定してください。anthy-el パッケージに含まれる anthy.el を使うときは次のように設定します 指定する値はを参照してください。 (setq emacs-ime "anthy-el") Vine Linux 4 の .emacs.my.el Vine Linux 4.2 までの ~/.emacs.el には、 ユーザ用初期化ファイル ~/.emacs.my.el があれば、 それを読み込む仕組みがありました。 Vine Linux 5.x では、vine-default に移行したため、 .emacs.my.el を読み込む仕組みは廃止しました。 もし過去の .emacs.my.el を流用したい場合は、 以下のように after-vine-default-setup-hook にフックして、 ~/.emacs.my.el を読み込ませることができます。 (add-hook 'after-vine-default-setup-hook (lambda () (if (file-exists-p (expand-file-name "~/.emacs.my.el")) (load (expand-file-name "~/.emacs.my.el") nil t nil)) )) ただし、Emacs 23 と Emacs 22 以前は随分仕様が変わっているので、 Vine Linux 4の Emacs 22 などで使っていた ~/.emacs.my.el をそのまま流用できるとは限りません。 仕組み vine-default は、各デフォルト設定を読み込む *-init.el を、 vine-default-setup 内で読まれる vine-default-setup-hook にひっかけて一旦ストックしておき、 after-init-hook にひっかけた vine-default-setup を実行することにより、 Vine Linux のデフォルト設定が読み込まれます。 具体的には、site-start.el と *-init.el に以下のような関数とフックを定義しています。 ;;; Emacs default settings for Vine Linux (defcustom emacs-ime (getenv "EMACS_IME") "A variable of default Input Method Editor" :type 'string) (if (null emacs-ime) (setq emacs-ime "scim")) (defcustom vine-default t "A boolean for all Vine Linux default settings" :type 'boolean) (if (equal (getenv "LOGNAME") "root") (setq vine-default nil)) (defcustom vine-default-base t "A boolean for vine-default-base" :type 'boolean) (defcustom vine-default-faces t "A boolean for vine-default-faces" :type 'boolean) (defvar vine-default-setup-hook nil "*List of functions to be called at vine-default-setup") (defvar after-vine-default-setup-hook nil "*List of functions to be called at the end of vine-default-setup") (defun vine-default-setup () "a function for setup to default configurations of Vine Linux." (if vine-default (progn (if vine-default-base (require 'vine-default-base)) (if vine-default-faces (require 'vine-default-faces)) (run-hooks 'vine-default-setup-hook) (run-hooks 'after-vine-default-setup-hook) ) ) ) (add-hook 'after-init-hook 'vine-default-setup) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (mapc 'load (directory-files "/etc/emacs-23.1/site-start.d" t "\\.el\\'")) Emacs の関連パッケージに対しては、例えば YaTeX の場合は、 50yatex-init.el に以下のような設定を追加しています。 (defcustom vine-default-yatex t "A boolean for vine-default-yatex" :type 'boolean) (add-hook 'vine-default-setup-hook (lambda() (if vine-default-yatex (require 'vine-default-yatex)))) vine-default-yatex.el には、 YaTeX のデフォルト設定を記述し、 (provide 'vine-default-yatex) を提供するようにします。 vine-default の下での ~/.emacs.el の設定 vine-default の下での Emacs の設定は、 大きくわけて以下の 3 つの設定パートに分かれています。 (a) vine-default (b) vine-default が上書きしない設定 (c) vine-default が上書きする設定 (a) は ~/.emacs.el を読み込んだ直後に、 /usr/share/emacs-23.x/site-lisp 以下の vine-default-*.el を然るべき順序で読み込まれます。 (b), (c) は、必要であれば ~/.emacs.el に(あるいは、.emacs.el から読み込む別の *.el に)設定します。 (b) を直接 ~/.emacs.el に設定して構いませんが、 (c) を直接 ~/.emacs.el に設定していると、 (a) により vine-default が優先されてしまいます。 例えば、以下のように ~/.emacs.el にフォントを設定していても、 後から読まれる vine-default-faces.el により 「Monospace 12」に上書きされていまいます。 (if window-system (set-frame-font "Monospace 10")) このような vine-default を上書きする設定は、 after-vine-default-setup-hook をひっかけます。 詳細は を参照してください。 Emacs のカスタマイズについて Emacs をカスタマイズしていくには、Emacs が持っているカスタマイズの仕組みを利用するのと、自分で設定ファイルに設定や関数などを書いていくという二つの方法があります。 Emacs の設定ファイルは ~/.emacs でそこから~/.emacs.el を読み込むようになっています。 Emacs の設定ファイル~/.emacs.el は、さらに、さまざまなファイルを読み込むようになっています。 フォントや色の設定のために、~/.emacs-faces.el~/.emacs-fontset.el を読み込んでいます。 Mew の設定のために、~/.mew.el を読み込んでいます。 Mew については、メールクライアント Mew を参照してください。 その他の設定のために、~/.emacs.my.el を読み込みます。 ~/.emacs.el , ~/.emacs-faces.el , ~/.emacs-fontset.el , ~/.mew.el は、あらかじめ用意されているものを書き換える、といった方法でカスタマイズしていきます。 ~/.emacs.my.el は、用意されていません。自分で作成し、その他の設定や、関数の定義などを記述していきます。 設定ファイルに書き込んでいく場合 1 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 と入力すると、現在開いているバッファ(設定ファイル)を評価することができます。文法のチェックや設定の適用などが行われるので、保存する前後で確認しておくと良いでしょう。 設定ファイルに書き込んでいく場合 2 設定や定義する関数などを、コメントと一緒に ~/.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 で保存します。 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: <> という部分は、ファイルを保存すると <> の部分に日時とユーザ名が入り、保存する度に自動的に更新されます。このファイル(~/.emacs.my.el)の更新日時を自動的に記録するというだけで、他のファイル等への影響はありません。 (setq inhibit-startup-message t) という部分で、起動時の splash screen を表示しないようにしています。 これで、Emacs を起動した時に、すぐにファイルの内容が表示されるようになります。 Emacs で用いられている lisp という言語では、t と nil が 真(肯定) と 偽(否定) として用いられます。もともとは nil となっているものなので t の部分を nil と書き換えると、起動時に splash screen が表示されるようになります。 load というものを使って、migemo というものを読み込んでいます。 migemo は、ローマ字で入力すると日本語も検索「tatoeba」と入力すると「tatoeba」という文字だけでなく、「たとえば」「タトエバ」「例えば」といったようなものも検索することができます。migemo というパッケージをインストールする必要があります。できるツールで、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が持っているカスタマイズの仕組みを利用する場合 設定ファイル~/.emacs.el ~/.emacs-faces.el ~/.mew.el などに書かれている項目を設定する場合は、設定ファイルを直接編集してください。 Emacs を起動して、M-x customize と入力するとのようなカスタマイズの画面になります。 TABキーを押すことで、アンダーラインのある部分、ボタンになっている部分(Set for Current Session や Go to Group など)、文字の入力が可能な部分にカーソルが移動します。Shift+TAB でカーソルが逆方向(上)に移動します。Enterキーで選択、確定です。Finish を選択すると、閉じます。
EmacsのCustomize画面
ここで操作して設定した内容は、~/.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キーを押してみるとよいでしょう。 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キーで補完が出来ます。) のように画面が切り替わります。
emacsの customize-variable の画面
TABキーを押して、8 という数字が表示されているところまでカーソルを移動し、C-d で8という文字を削除し、数字を入力します。たとえば 4 とすると、TAB の幅が元の幅の半分になります。 Set for Current Session というボタンのところまで移動し、Enterキーを押すと、一時的に設定を有効にした状態になります。数値は保存されないので、次回起動時には元の値 8 にもどります。 Save for Future Sessions のボタンで Enterキーを押すと、この数値が、設定ファイルに書き込まれて保存され、次回 Emacs を起動した時に利用できるようになります。 Reset のボタンで、入力した数値がもとにもどります。 Reset to Saved のボタンで、前回保存した時の値にもどります。 Erase Customization のボタンで、設定した数値が取り消され、設定ファイルにあった記述も削除されます。 数値を入力し、Set for Current Session のボタンを押してテストして、適当な値になるまで customize を行うという作業を繰り返して、それから Save for Future Sessions で保存するという作業をします。 ここでは、Save for Future Sessions で保存してしまっていいと思います。 保存したら、Finish のボタンをクリックします。M-< でページの先頭まで戻ると早いです。 Save for Future Sessions で保存すると、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 などを使って再度設定するようにしてください。
Vine Linux 4.2 の Emacs Vine Linux 4.2 の Emacs では、 Emacs Lisp の RPM パッケージに含まれていた site-start.el に Emacs Lisp の設定を記述していました。 つまり、Vine Linux 5.0 以降でいう 「個別の RPM パッケージに含まれている設定 (distribution-wide な設定)」 と 「システム全体での設定 (system-wide な設定)」 が分離されていませんでした。 そのため、RPM パッケージで設定されている内容を変更するために site-start.el ファイルを編集した場合、 RPM パッケージがアップデートされると再び設定を実施する必要がありました。 Vine Linux 5.0 以降では、 「distribution-wide な設定」 と 「system-wide な設定」 を分離することにより、この問題を解決しています。 emacs-ime に設定できる値の一覧 Vine Linux 5.x で emacs-ime に設定できる値は次の通りです。 ただし、現在はよく使われるもののみを記載しています。 emacs-ime に設定できる値の一覧 (抜粋) 使うIME emacs-ime に設定する値 Vine Linux 5.x でのパッケージ名 Anthy (japanese-egg-anthy) LEIMを使用。 scim、SCIM、anthy、Anthy、egg-anthy、tamago-anthy tamago パッケージ Anthy (anthy-el) anthy-el、Anthy-el anthy-el パッケージ SCIM scim-bridge、scim-bridge-el scim-bridge-el パッケージ UIM uim、uim-el uim-el パッケージ UIM (japanese-anthy-utf8-uim) uim-leim ibus ibus-el、IBus-el ibus-el パッケージ Mozc (japanese-mozc) mozc、mozc-el mozc-el パッケージ SKK (Daredevil SKK) skk skk パッケージ T-Code (tc2) tc2、tc-el tc-el パッケージ ATOK iiimecf、IIIMECF、atokx、atokx2、atokx3 IIIMECF パッケージ Wnn、FreeWnn (japanese-egg-wnn) wnn、Wnn、wnn6、Wnn6、wnn8、Wnn8 tamago パッケージ wnn ななたまご (Wnn7egg) wnn7egg、wnn7、Wnn7 wnn7egg パッケージ