Emacs 利用ガイド Munehiro Yamamoto Masaharu Iwai Vine Linux 5.X の Emacs(以下、Emacs は GNU Emacs を指す)環境は、 Vine Linux 4.2 までのそれと比べて、大幅に変更されています。 このドキュメントは、新しく搭載された system-wide な設定および vine-default を中心に解説します。 system-wide な設定 Emacsを起動すると、site-start.el を読み終われば、 すぐに ~/.emacs.el を読み込みます。 site-start.el は Vine Linux の distribution-wide な設定ファイルのため、 4.2 以前で system-wide な設定を施すためには、 RPMパッケージがアップデートされるたびに site-start.el を 編集する必要がありました。 そこで 5.0 では、直接 site-start.el を変更しなくても、 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 上で動作するアプリケーションのパッケージをインストールしたら、 ユーザ初期設定ファイル ~/.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 上におけるそれと連動して、環境変数 EMACS_IME により設定されます。 もし EMACS_IME と異なる IME を使いたい場合は、 skk を例にすると、~/.emacs.el に (setq emacs-ime "skk") を設定します。 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 ではフレームといい、一つのフレームの中を分割したものをウィンドウと呼びます。 文字入力 ウィンドウにカーソルがある時、キーボードから入力した文字はカーソル位置に挿入され、カーソルが進みます。日本語を入力する時には、'C-\'で日本語切替えモードになります。 もう一度'C-\'を押すとアルファベットの入力モードに戻ります。 日本語入力システムについては、を参照して下さい。 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バッファについているマークを消します。
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 などを使って再度設定するようにしてください。