[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5. Common requests (2004/07/28)

"texi/emacs21/Commonrequests"へのコメント(無し)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.1 `.emacs' ファイルを正しく設定する方法は? (2004/07/28)

"texi/emacs21/`.emacs'ファイルを正しく設定する方法は?"へのコメント(無し)

オンラインマニュアルの See Info file `emacs', node `Init File' 参照。

一般に Emacs を初めて使うユーザは `.emacs' ファイルを持たないほうが 良いでしょう。マニュアルの記述とは違う振る舞いに混乱するからです。 に Emacs がドキュメント通りに動作しないと 質問するはめになりますよ。 :-)

Emacs 20.1 以降では "customize" という仕組みがあって、 M-x customize で起動することができます。 これにより Emacs Lisp に慣れていないユーザでも メニューを使って比較的簡単に `.emacs' を変更することができます。 執筆時点では、すべてのパッケージが "customize" に 対応しているわけではありませんが、その数は確実に増えています。

customize によって Emacs の設定が楽になりますが、少しは Emacs Lisp を 勉強して `.emacs' を直接書き換えることも考えてみてください。 オンラインマニュアルの See Info file `emacs', node `Init File' には 基本的な設定をする為の簡単な方法がほとんど書かれています。

時々,`.emacs'がどこにあるのか分からないユーザがいるようです.その場合には, Emacs から `~/.emacs' というファイルを開くと,正しいファイルを見つけること ができます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.2 文字端末上でも色をつける方法は?

"texi/emacs21/文字端末上でも色をつける方法は?"へのコメント(無し)

Emacs 21.1 では face が文字端末上でもサポートされていて、 Unix や GNU/Linux の文字端末やコンソール上で実行した場合や X や MS-Windows 上で `-nw' オプション付きで実行した場合にも face が表示できます。 (face は Emacs 19.29 以降の MS-DOS 版でサポートされていました。) Emacs は起動時に色が表示できるか自動的に判定し、可能ならば色を仕様します。 色付き端末であるにもかかわらず Emacs で色が表示できていない場合には `termcap' の色表示に関するエントリを調べてください。

M-x list-colors-display で(Emacs の意味での)ウィンドウをポップアップし、 利用可能なすべての(名前付きの)色を表示します。

構文の強調表示は標準では無効になっています。 有効にする方法については 5.44 構文を強調表示させる方法は? 参照。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.3 `.emacs' ファイルを修正する方法は?

"texi/emacs21/`.emacs'ファイルを修正する方法は?"へのコメント(無し)

まず Emacs を `-debug-init' オプションを指定して起動してください。 これで `.emacs' ファイルを評価する前に Emacs Lisp デバッガを有効にし、 エラー検出されたらその場所を表示してくれます。 @buffer{trace-back} バッファは一行目にエラーメッセージを 二行目か三行目にエラーになった `.emacs' 中のリスプコードを表示します。

また `.emacs' 中にある個々の関数や引数を式の最後にポイントを移動して C-x C-e (M-x eval-last-sexp)を入力して評価することもできます。

変数の値を調べるには C-h v (M-x describe-variable) としてください。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.4 現在行(またはカラム)を表示させる方法は? (2004/07/28)

"texi/emacs21/現在行(またはカラム)を表示させる方法は?"へのコメント(無し)

モードラインに自動的に現在の行番号を表示させるには M-x line-number-mode としてください。 あるいは `.emacs' に次の様に書き加えてください。

 
(setq line-number-mode t)

(行番号は標準で表示されるようになっていますが、サイトの初期化ファイルで 表示させないようにしているかもしれません。) バッファのバイトサイズが変数 line-number-display-limit よりも 大きいときは行番号は表示されなくなることに注意してください。

Emacs 20 では行番号と同じように M-x column-number-mode で現在の カラム位置をモードラインに表示するようになります。 起動時に指定するには `.emacs' に次のように書き加えてください。

 
(setq column-number-mode t)

変数 mode-line-format 中の "%c" 書式指定子は 現在のカラム位置をあらわします。 詳しくは mode-line-format の説明を読んでください (C-h v mode-line-format RET で見られます)。

の `column' パッケージを 使えば Emacs のバージョンによらずに現在のカラム位置を表示できます。 パッケージの入手方法については 8.3 Emacs の配布パッケージに含まれない Emacs Lisp パッケージの入手方法は? (2004/07/29) 参照。

vi エミュレーションで `set number' を実現するものはありません (私の知る限りでは)。 による `setnu' パッケージはこの機能を提供します. による `wb-line-number' も同様のものです.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.5 タイトルバーに編集中のファイル名を表示させる方法は?

"texi/emacs21/タイトルバーに編集中のファイル名を表示させる方法は?"へのコメント(無し)

Emacs の frame のタイトルバーの文字列は変数 frame-title-format に よって制御されます。この変数の値は変数 mode-line-format と 同じ形式で設定します。(変数の説明を読むには C-h v (M-x describe-variable) を使ってください)

標準でタイトルバーは複数の frame が有るときは現在のバッファ名になり、 frame が一つしかないときは Emacs を起動した時の コマンド名とマシンの名前になります。 この設定は frame-title-format の標準の値を次の様にすることで 実現されています。

 
(multiple-frames "%b" ("" invocation-name "@" system-name))

frame のタイトルバーに常にバッファ名を表示させる為には `.emacs' に次のように書き加えてください。

 
(setq frame-title-format "%b")



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.6 mymode モードで略語モードにする方法は?

"texi/emacs21/mymodeモードで略語モードにする方法は?"へのコメント(無し)

`.emacs' に次のように書き加えてください。

 
(condition-case ()
   (quietly-read-abbrev-file)
  (file-error nil))

(add-hook 'mymode-mode-hook
          (lambda ()
           (setq abbrev-mode t)))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.7 auto-fill-mode にする方法は?

"texi/emacs21/auto-fill-modeにする方法は?"へのコメント(無し)

auto-fill-mode をバッファに対して設定するには、 M-x auto-fill-mode と入力します。

特定のモードに対して常にバッファが auto-fill-mode になる様にするには そのモードの hook を設定する必要があります。たとえば text-mode に 対して auto-fill-mode を設定するには 次のよう `.emacs' に書き加えてください。。

 
(add-hook 'text-mode-hook 'turn-on-auto-fill)

モードによらずに auto-fill-mode にするには次のようにしてください。

 
(setq-default auto-fill-function 'do-auto-fill)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.8 特定のファイルに対してメジャーモードを指定する方法は?

"texi/emacs21/特定のファイルに対してメジャーモードを指定する方法は?"へのコメント(無し)

拡張子 .bar を持つファイルを開いたときに foo モードに するには次のように `.emacs' に書き加えてください。

 
(setq auto-mode-alist (cons '("\\.bar\\'" . foo-mode)
                            auto-mode-alist))

拡張子を使わずに特定のファイルを foo モードに設定したいときは ファイルの一行目(が `#!' で始まるなら二行目)のどこかに次の様に 書き加えてください。

 
-*- foo -*-

Emacs 19 以降では変数 interpreter-mode-alist でシェルスクリプトを 読み込んだときにどのモードにするか決定します。 (Emacs はファイルの一行目を見てどのインタープリタを使っているか判断します) この機能はファイル名からモードを決定できないときにのみ働きます。 詳しくは C-h v (M-x describe-variable) で interpreter-mode-alist について調べてください。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.9 印字不能文字を検索・削除・置換したりする方法は? (2004/07/28)

"texi/emacs21/印字不能文字を検索・削除・置換したりする方法は?"へのコメント(無し)

バッファに表示されている、例えば `\237' のような一文字は C-s C-q 2 3 7 と入力すると検索できます。 (これは変数 search-quote-char の値が 17(C-q)の場合です) すべての印字不能文字を検索するには 正規表現(regexp)による検索を行います。 印字不能文字を表す最も簡単な正規表現は印字可能文字の補集合です。

isearch-forward-regexpre-search-forward の引数に 特殊文字を入力するには C-q を使う必要があります。 (`\t', `\n', `\r', `\f' はそれぞれ TAB, LFD, RET, C-l を表します。) re-search-forward で印字不能文字を検索するには次の様にします。

M-x re-search-forward RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET

isearch-forward-regexp の場合は次の様になります。

C-M-s [^ TAB LFD C-q RET C-q C-l SPC -~]

すべての印字不能文字を削除するには、replace-regexp コマンドを使います。

M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET RET

置換は上と似ています。すべての印字不能文字をコロンと置換するには、 replace-regexp コマンドを次のように使います。

M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET : RET



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.10 選択領域を強調表示させる方法は?

"texi/emacs21/選択領域を強調表示させる方法は?"へのコメント(無し)

選択領域を画面表示に反映させるには、 `.emacs' に次の様に書き加えてください。

 
(transient-mark-mode t)

(5.44 構文を強調表示させる方法は? も参考にしてください。)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.11 検索・置換のときに大文字と小文字の区別をする方法は?

"texi/emacs21/検索・置換のときに大文字と小文字の区別をする方法は?"へのコメント(無し)

検索の際には変数 case-fold-search の値により 大文字と小文字を区別するか決定されます。

 
(setq case-fold-search nil) ; 大文字と小文字を区別する
(setq case-fold-search t)   ; 大文字と小文字を区別しない

同様に置換の際には変数 case-replace の値により 置換後の文字列が大文字になるか小文字になるかが決定されます。

特定のモードでのみ大文字と小文字の区別をする(又はしない)場合には メジャーモードの hook を使ってください。 たとえば foo-mode で、大文字と小文字を区別したい場合には 次の様になります。

 
(add-hook 'foo-mode-hook
          (lambda ()
           (setq case-fold-search nil)))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.12 自動で改行させる方法は?

"texi/emacs21/自動で改行させる方法は?"へのコメント(無し)

M-x auto-fill-modeauto-fill-mode にして下さい。 標準では 70 桁以下で改行されます。 改行位置は fill-column で設定できます。 自動的に auto-fill-mode にするについては 5.7 auto-fill-mode にする方法は? を参照。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.13 Emacs に対応した良いスペルチェッカはありませんか?

"texi/emacs21/Emacsに対応した良いスペルチェッカはありませんか?"へのコメント(無し)

Ispell を使ってください。 9.7 Ispell -- Emacs インターフェース付きの C プログラム 参照。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.14 TeX や *roff ドキュメントにスペルチェックをかける方法は?

"texi/emacs21/TeXや*roffドキュメントにスペルチェックをかける方法は?"へのコメント(無し)

Ispell を使ってください。 Ispell は TeX や *roff 文書のソース 9.7 Ispell -- Emacs インターフェース付きの C プログラム 参照。 Ispell can handle TeX and *roff documents.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.15 load-path を設定する方法は?

"texi/emacs21/load-pathを設定する方法は?"へのコメント(無し)

一般的に load-path の値を変更するときは ディレクトリを load-path に追加します。 /dir/subdirload-path に追加するには次の様にします。

 
(setq load-path (cons "/dir/subdir/" load-path))

ホームディレクトリからの相対パスを指定するには次の様にします。

 
(setq load-path (cons "~/mysubdir/" load-path)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.16 既に起動している Emacs を他のプログラムから利用する方法は? (2004/07/28)

"texi/emacs21/既に起動しているEmacsを他のプログラムから利用する方法は?"へのコメント(無し)

Emacs 配布パッケージに付属する emacsclient を使えば 既に起動している Emacs と通信してファイルを編集するように指示できます。 そのために Emacs 側で設定をしておく必要があります。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.17 コンパイラが出すエラーメッセージを Emacs に認識させる方法は?

"texi/emacs21/コンパイラが出すエラーメッセージをEmacsに認識させる方法は?"へのコメント(無し)

変数 compilation-error-regexp-alist によって Emacs はコンパイラの出力を解釈します。 この変数の値はリストで、要素は次のような要素数 3 のリストです。

(regexp file-idx line-idx)

regexp, file-idx, line-idx は文字列です。 それぞれの文字列の値を決めるには `compile.el' をロードし、 次のようにして変数の値を調べると良いでしょう。

C-h v compilation-error-regexp-alist RET

`compile.el' の中のこの変数に関するコメントを読んでみるのも 良いでしょう。あなたの使っているコンパイラの出力に良く似た正規表現 が書かれているかも知れません。一度正しく値を設定したら、次のように `.emacs' に書き加えておきましょう。

 
(setq compilation-error-regexp-alist
      (cons '(regexp file-idx line-idx)
            compilation-error-regexp-alist))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.18 C の switch 文でインデントする方法は?

"texi/emacs21/Cのswitch文でインデントする方法は?"へのコメント(無し)

多くの人は次のように `switch' 文をインデントしたいでしょう。

 
f()
{
  switch(x) {
    case A:
      x1;
      break;
    case B:
      x2;
      break;
    default:
      x3;
  }
}

一つの解法は c-indent-level を 4 に、c-label-offset を -2 に 設定することです。しかしこの方法ではインデントレベルが 2 ではなく 4 になってしまいます。

本当の解決方法は cc-mode (Emacs 20 以降では C プログラムを 編集するときの標準のモード)を使うことです。 そして `.emacs' に次のように書き加えておきます。

 
(c-set-offset 'case-label '+)

古い c-mode では解決方法はありません。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.19 C, C++, Java のインデントを変更する方法は?

"texi/emacs21/C,C++,Javaのインデントを変更する方法は?"へのコメント(無し)

Emacs の cc-mode にはインデントを対話的に設定するための プログラムがあります。その方法については Emacs 付属の

CC Mode
の マニュアルに説明があります。 See Info file `ccmode', node `Customizing Indentation'参照。 簡単な説明をここに書いておきます。

  1. インデント位置を変えたい行の行頭に移動し、 C-c C-o を入力します。 Emacs は文法を表すシンボルの入力を要求しますが、 最初に表示された値を利用することにして単に RET を入力します。

  2. 次に Emacs がこの文法要素に対するオフセットの入力を要求してきます。 括弧内に表示されているのは現在の値です。 ここで次のいずれかを入力します。

    0
    インデントなし
    +
    インデント一段
    -
    アウトデント一段
    ++
    インデント二段
    --
    アウトデント二段
    *
    インデント0.5段
    /
    アウトデント0.5段

  3. 上記のいずれかを入力したら C-c C-q を入力してブロックをインデント しなおします。

  4. 期待通りにインデントされなかったら最初からやり直します。 うまくいったのなら `.emacs' に次の様に書き加えます。

     
    (c-set-offset 'syntactic-symbol 'offset)
    

    syntactic-symbolC-c C-o の入力の後に指定したシンボルで offset はインデントを表すシンボルです。 (+, /, 0 など)

  5. 他にもインデントを変更したい場所があれば以上の操作を繰り返します。

`.emacs' に書き加える (c-set-offset ...)c-mode-hook で実行するほうがお奨めです。 そのためには次の様に書き換えます。

 
(defun my-c-mode-hook ()
  (c-set-offset ...)
  (c-set-offset ...))
(add-hook 'c-mode-hook 'my-c-mode-hook)

c-mode-hook を利用することで (require 'cc-mode) を `.emacs' に書かずに済みます。 c-set-offsetcc-mode がロードされていないと利用できません。

しかし c-mode-hook は C のソースファイルを編集する時にしか 働かないので注意が必要です。 C++ に対しては c++-mode-hook が Java に対しては java-mode-hook が対応します。 これらの(cc-mode のサポートする)言語すべてに対して インデントを有効にしたければ c-mode-common-hook を利用してください。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.20 水平方向に自動的にスクロールさせる方法は?

"texi/emacs21/水平方向に自動的にスクロールさせる方法は?"へのコメント(無し)

Emacs 21 以降では標準でこの機能が使えます。 truncate-lines の値が non-nil なら、 ポイントが右端もしくは左端からはみ出した時に 自動で横方向にスクロールします。

Emacs 20 では hscroll-mode を使ってください。 C-h f hscroll-mode RET で読める説明を書いておきます。

ポイントがウィンドウの右か左にはみ出たときに自動的に横方向にスクロールします。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.21 「挿入」ではなく「上書き」する方法は?

"texi/emacs21/「挿入」ではなく「上書き」する方法は?"へのコメント(無し)

M-x overwrite-mode (マイナーモードです)。これで 挿入モードと上書きモードを切り替えられます。

システムによっては Insert キーで 挿入モードと上書きモードを切り替えられます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.22 端末からビープ音がしないようにする方法は? (2004/07/28)

"texi/emacs21/端末からビープ音がしないようにする方法は?"へのコメント(無し)

は次の様に書いています。

音響ベルではなくて視覚ベルを使うように Emacs を設定して、 さらに視覚ベルは何もしないように設定すればいいんだ。

環境変数 TERMCAP

 
... :vb=: ...

という設定を追加して

 
(setq visible-bell t)

を評価すれば期待に沿えると思う。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.23 X 上で Emacs を使っている時にベルの音量を調節する方法は?

"texi/emacs21/X上でEmacsを使っている時にベルの音量を調節する方法は?"へのコメント(無し)

ベルの音量と持続時間は xset というシェルコマンドで すべてのプログラムについて調節できます。

引数なしで xset を呼ぶと次のような簡単な説明が出ます。

 
usage:  xset [-display host:dpy] option ...
  To turn bell off:
      -b                b off               b 0
  To set bell volume, pitch and duration:
       b [vol [pitch [dur]]]          b on



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.24 改行したときに上の行のインデント位置まで自動的にインデントする方法は? (2004/07/28)

"texi/emacs21/改行したときに上の行のインデント位置まで自動的にインデントする方法は?"へのコメント(無し)

Emacs 20 以降では標準でそうなっています。 Emacs 20.2 の `etc/NEWS' ファイルには次のように書かれています。

 
** text-mode では空行が段落の切れ目になっています。
これにより adaptive-fill-mode の特典が text-mode と
それに似たモード(mail-mode など)で有効になります。
text-mode では TABindent-relative コマンドを実行します。
このことはインデントした段落を編集するときにのみ影響します。

結果的に indented-text-modetext-mode と同じことになるので
それは単なる別名になっています。

段落のはじめにスペースが欲しい場合は新しくできた
paragraph-indent-text-mode を使ってください。

もし auto-fill-mode (5.7 auto-fill-mode にする方法は? 参照) の設定をしているなら、変数 fill-prefix を設定して 特定の文字列を行頭に付加させることができます。 行頭に文字列を入力してその文字列の直後にポイントを移動させ、 C-x . (M-x set-fill-prefix) を入力して下さい。 行頭からポイントまでの文字列が fill-prefix に設定されます。 これ以降、自動折り返しの際に fill-prefix が新しい行の 行頭に付加されます。 また M-q (M-x fill-paragraph) で段落内の改行位置を再設定する際に fill-prefix は行頭から移動することはありません。

インデントレベルの異なる段落がある場合は、段落を移動するたびに fill-prefix を設定しなおす必要があります。これを避けるために多くのパッケー ジがあります (8.3 Emacs の配布パッケージに含まれない Emacs Lisp パッケージの入手方法は? (2004/07/29) 参照). "fill" 又は "indent" をキーワードとして検索してください.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.25 括弧の対応を調べる方法は? (2004/07/28)

"texi/emacs21/括弧の対応を調べる方法は?"へのコメント(無し)

Emacs 19 には `paren.el' があります。これは(ロードした後) ポイントが括弧の上に来たら、自動的に対応する括弧を目立たせるものです。 自動的に `paren.el' をロードするには `.emacs' に 次の様に書き加えてください。

 
(require 'paren)

は Emacs 20.1 以降では show-paren-mode を書き加える必要がある と言っています。

 
(show-paren-mode 1)

"customize" を使って show-paren-mode にすることもできます。

M-x customize-group RET paren-showing RET

直接 "paren-showing" グループを選択できます。

`paren.el' のほかにも次の様なものがあります。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.26 C モードで `#ifdef' マクロをプリプロセッサで処理したように表示させる方法は? (2004/07/28)

"texi/emacs21/Cモードで`#ifdef'マクロをプリプロセッサで処理したように表示させる方法は?"へのコメント(無し)

M-x hide-ifdef-mode (マイナーモードです)。 Emacs に付属している `cpp.el' を調査する方法もあります。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.27 vi の `.' コマンドと等価なコマンドはありますか?

"texi/emacs21/viの`.'コマンドと等価なコマンドはありますか?"へのコメント(無し)

(`.' は vi では再実行コマンドです。 直前の挿入・削除を繰り返します。)

Emacs 20.3 以降では repeat コマンド(C-x z)で 最後のコマンドを再実行できます。 prefix argument 付きで実行した場合は repeat コマンドが 呼び出すコマンドに適用されます。

あるいは C-x ESC ESC (M-x repeat-complex-command) でミニバッファから引数を読み込んだコマンドを再実行することができます。 repeat-complex-command では M-p または M-n (あるいはキーボードにあるなら上・下向きの矢印キー)で 前後のコマンドを探すことができます。

いくつかのコマンドをまとめて実行したい時はキーボードマクロを使ってください。 (See Info file `emacs', node `Keyboard Macros' 参照)

どうしても `.' コマンドを使いたいなら VIPER (Emacs 付属の vi エミュレータ)を使ってください。 (9.4 VIPER -- vi エミュレーション (2004/07/29) 参照)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.28 X リソースの正しい設定方法は? `.Xdefaults' に書けばいいんですか? (2004/07/28)

"texi/emacs21/Xリソースの正しい設定方法は?`.Xdefaults'に書けばいいんですか?"へのコメント(無し)

See Info file `emacs', node `X Resources' 参照。

Emacs が X toolkit を使ってコンパイルされたものならメニューバーの リソース名などを調べるのにリソースエディタを使うこともできます。 X11R5 以降なら editres が使えます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.29 Emacs Lisp のコードを実行(評価)する方法は?

"texi/emacs21/EmacsLispのコードを実行(評価)する方法は?"へのコメント(無し)

Emacs Lisp の を実行(lisp の言葉では 評価 と言う)するには 幾つかの方法があります。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.30 タブ位置を変更する方法は?

"texi/emacs21/タブ位置を変更する方法は?"へのコメント(無し)

変数 default-tab-width の値を設定してください。 たとえば 10 カラムにしたかったら次の様に `.emacs' に書き加えてください。

 
(setq default-tab-width 10)

変数 tab-width と変数 tab-stop-list を混同しないで下さい。 tab-width は表示を制御する変数で、 tab-stop-list は特定のモードで TAB を入力した時に バッファに挿入される文字を決定します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.31 `>' をすべての行頭に挿入する方法は?

"texi/emacs21/`'をすべての行頭に挿入する方法は?"へのコメント(無し)

M-< M-x replace-regexp RET ^ RET > RET と入力してください。

選択領域内に制限したい時は M-x string-insert-rectangle を使ってください。 `>' を挿入したい最初の行に移動してマークし(C-SPC)、 `>' を挿入したい最後の行に移動してから M-x string-insert-rectangle RET を入力してください。 バッファ全体に適用するには C-x h M-x string-insert-rectangle RET と入力してください。

メールのリプライで引用したメールの行頭に `>' を挿入したい場合は 変数 mail-yank-prefix を使うと良いでしょう。 Supercite (9.2 Supercite -- メール・ニュースで記事を引用するためのパッケージ (2004/07/29) 参照)を使うと 色々な引用の仕方をすることができます。 Supercite は Emacs 19.20 以降には付属しています。 詳しくは 12.1 メールやニュースにフォローアップするときの引用記号の変更方法は? を参照してください。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.32 選択領域中の書く文字の前に "_^H" を挿入してアンダーラインを引く方法は?

"texi/emacs21/選択領域中の書く文字の前に"_^H"を挿入してアンダーラインを引く方法は?"へのコメント(無し)

M-x underline-region RET



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.33 コマンドをできるだけ繰り返して実行する方法は?

"texi/emacs21/コマンドをできるだけ繰り返して実行する方法は?"へのコメント(無し)

C-x (C-x ) で一連のコマンドを実行するキーボードマクロを 定義してから M-0 C-x e と入力してください。

コマンドがエコーエリアに出力するメッセージは抑制されます。

数回だけコマンドを繰り返したい場合は C-x z も使えます。 5.27 vi の `.' コマンドと等価なコマンドはありますか? 参照。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.34 上下の行が短くてもカラム位置を変えずにカーソルを上下に移動させる方法は?

"texi/emacs21/上下の行が短くてもカラム位置を変えずにカーソルを上下に移動させる方法は?"へのコメント(無し)

M-x picture-mode.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.35 Emacs に自分自身をアイコン化させる方法は? (2004/07/28)

"texi/emacs21/Emacsに自分自身をアイコン化させる方法は?"へのコメント(無し)

X などのウィンドウシステム上で Emacs を実行しているならC-z でアイコン化し ます。文字端末上ならサスペンドします。詳しくは See Info file `emacs', node `Frame Commands' を参照してください。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.36 正規表現の使い方は?

"texi/emacs21/正規表現の使い方は?"へのコメント(無し)

See Info file `emacs', node `Regexps' 参照。

または は `\|' です。`|' ではありません。 同様にグループ化オペレータは `\(' と `\)' です。 また文字列のシンタックスではバックスラッシュ(`\')を表すには `\\' を使います。 つまり正規表現 `xxx\(foo\|bar\)' の文字列による表示は "xxx\\(foo\\|bar\\)" になります。

バックスラッシュを二重にすることを忘れないように!



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.37 複数のファイルにまたがる置換をする方法は?

"texi/emacs21/複数のファイルにまたがる置換をする方法は?"へのコメント(無し)

Emacs の "tags" 機能にはコマンド tags-query-replace があって、 `TAGS' ファイルに記述されるすべてのファイルに対して コマンド query-replace を実行します。 See Info file `emacs', node `Tags Search' 参照。

Emacs 19.29 では dired-mode (C-x d (M-x dired))に dired-do-query-replace というコマンドがあり、 複数のファイルに対して置換をすることができます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.38 etags のドキュメントはどこにありますか?

"texi/emacs21/etagsのドキュメントはどこにありますか?"へのコメント(無し)

etags の man page は emacs の man page と同じ場所にあるはずです。

コマンドラインオプションの簡単な説明は `etags -H' で見られます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.39 バックアップファイルを作らないようにする方法は?

"texi/emacs21/バックアップファイルを作らないようにする方法は?"へのコメント(無し)

バックアップは重要なのでそのようなことは勧められません。

バックアップファイル(や "重要でない" ファイル)を dired-mode で 見えない様にするには `dired-x.el' をロードするように `.emacs' に 次のように書き加えてください。

 
(add-hook 'dired-load-hook
          (lambda () (load "dired-x")))

`dired-x.el' をロードすると M-o でバックアップファイルを 表示するか否かを切り替えられます。 自動で表示しないようにするには `.emacs' に次の様に書き加えてください。

 
(add-hook 'dired-mode-hook 'dired-omit-toggle)

Unix のシェルで ls を実行する度にバックアップファイルが 見えるのが嫌なら、GNU の ls で `-B' オプションを 付けて実行してみてください。 GNU ls は GNU Fileutils パッケージに含まれていて、 ftp://ftp.gnu.org またはそのミラーサイトから入手できます。 (3.8 Emacs にはどんなファイルが付属していますか? 参照)

バックアップを止めたり、バックアップのファイル名を変更したい場合は See Info file `emacs', node `Backup Names' を参照してください。

Emacs 21.1 以降では変数 backup-directory-alist を設定することで バックアップファイルを作るディレクトリを指定できます。 この変数の値はファイル名の正規表現とディレクトリの連想リストで、 バックアップファイルをすべて特定のディレクトリ `dir' に 作るようにするには ("." . "dir") を要素として追加します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.40 auto-save-mode にしない方法は? (2004/07/28)

"texi/emacs21/auto-save-modeにしない方法は?"へのコメント(無し)

auto-save は Emacs やマシンがクラッシュしたときに重要なので そのようなことは勧められません。

変数 auto-save-interval を設定することで auto-save の回数を減らすことは できます。この変数は何回キーを押すと auto-save するか決めます。 この変数の値を増やすことで auto-save の回数が減らせます。

Sebastian Kremer の `auto-save' パッケージを使っても良いでしょう (8.3 Emacs の配布パッケージに含まれない Emacs Lisp パッケージの入手方法は? (2004/07/29) 参照)。このパッケージを使うとバック アップファイルを特定のディレクトリ(たとえば `/tmp')にまとめることができます。

auto-save-mode の挙動を変更したいときは See Info file `emacs', node `Auto Save' 参照。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.41 指定した行番号に移動する方法は?

"texi/emacs21/指定した行番号に移動する方法は?"へのコメント(無し)

本当に行番号という情報からその行に移動したいのですか? コンパイラがエラーメッセージを出した場所に移動したいのではありませんか? もしそうなら Emacs の中から M-x compile, {M-x recompile} と 入力してコンパイルしてください。 Emacs はコンパイラの出力を @buffer{*compilation} バッファに取り込み、 C-x ` と入力することでエラーメッセージに対応する場所を順に表示します。 @buffer{*compilation*} バッファのエラーメッセージ上で Mouse-2 または RET を入力することで直接表示させることもできます。

もし本当に特定の行番号の行に移動したいなら M-x goto-line RET と 入力してから行番号を入力して移動することができます。

プレフィクスキーを利用して行番号を先に指定することもできます。 たとえば C-u 286 M-x goto-line RET で 286 行目に移動します。

このコマンドを頻繁に利用するなら適当なキーに割り当てておくと良いでしょう。 次の様に `.emacs' に書き加えれば C-x ggoto-line が 起動されるようになります。

 
(global-set-key "\C-xg" 'goto-line)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.42 メニューバーの項目を変更する方法は?

"texi/emacs21/メニューバーの項目を変更する方法は?"へのコメント(無し)

@menuitem{File}, @menuitem{Edit}, @menuitem{Buffers} などの メニュータイトルは一つのキーマップを表します。 メニュータイトルをマウスで選択するとそのキーマップに定義されている メニューを表示します。

メニューに新しい項目を加えるには そのキーマップに新しい項目を定義してください。 @menuitem{forward word} を @menuitem{Edit} メニューに追加するには 次のようにします。

 
(define-key global-map
  [menu-bar edit forward]
  '("Forward word" . forward-word))

最初の引数にキーマップ global-map を指定することでメニュー定義は グローバルになります。 global-map を適当なキーマップに置き換えれば 特定のモードに対してメニューを追加することができます。

二番目の引数は新しい項目のメニューでの位置を表しています。 editfile に置き換えれば @menuitem{Files} メニューに 項目を追加することになります。

三番目の引数は cons cell で、第一要素はメニューに表示される文字列、 第二要素はメニュー項目を選択した時に実行されるコマンドです。

メニュー項目としてサブメニューを追加するには メニュー定義にキーマップを指定します。

 
(define-key global-map [menu-bar words]
  (cons "Words" (make-sparse-keymap "Words")))

このコードでは新しいキーマップを定義してメニューバーに サブメニュー @menuitem{Words} を追加します。 @menuitem{Words} メニューに @menuitem{Forward Word} を追加するには 次の様にします。

 
(define-key global-map
  [menu-bar words forward]
  '("Forward word" . forward-word))

キーマップの内部構造の問題から、新しいメニューの項目は一番上に追加されます。 たとえば @menuitem{foo}, @menuitem{bar}, @menuitem{baz} の順に メニュー項目を追加するとメニューは @menuitem{baz}, @menuitem{bar}, @menuitem{foo} の順になります。

この問題を回避するには define-key-after を使ってください。 この関数は define-key と同様にキーマップを変更しますが、 新しい定義の位置を指定することができます。 @menuitem{Edit} メニューの @menuitem{Undo} の一つ下に @menuitem{Forward Word} を追加するには次の様にします。

 
(define-key-after
  (lookup-key global-map [menu-bar edit])
  [forward]
  '("Forward word" . forward-word)
  'undo)

define-key-after の二番目の引数と三番目の引数が define-key と 異なり、また四番目の引数があることに注意してください。 四番目の引数に指定されるメニューの次に追加されます。 メニューの最後に追加したい場合は第四引数を t にします。

同一のサブメニュー内でメニュー項目を別の位置に移動したい場合は 単に define-key-after を新しい位置を指定して評価してください。

詳細については

Emacs Lisp Reference Manual
(3.4 Emacs Lisp ドキュメントの入手方法は? (2004/07/28) 参照) の "Menu Keymaps" にあります。 (Emacs Lisp Reference Manual がインストールされているなら See Info file `elisp', node `Menu Keymaps' 参照)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.43 メニューバーの項目を削除する方法は?

"texi/emacs21/メニューバーの項目を削除する方法は?"へのコメント(無し)

最も単純な方法はキーマップを nil にしてしまうことです。 たとえば (5.42 メニューバーの項目を変更する方法は? の) @menuitem{Words} メニューを 削除するには次の様にします。

 
(define-key global-map [menu-bar words] nil)

@alias menuitem=samp 同様にメニューの項目を削除するにもキーマップの定義を nil にします。 たとえば(5.42 メニューバーの項目を変更する方法は? で追加した) @menuitem{Forward Word} を @menuitem{Edit} メニューから削除するには 次の様にします。

 
(define-key global-map [menu-bar edit forward] nil)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.44 構文を強調表示させる方法は?

"texi/emacs21/構文を強調表示させる方法は?"へのコメント(無し)

font-lock-mode は Emacs で構文の強調表示を行う標準的な方法です。 font-lock-mode を使うと違う型の文字は違う色で表示されます。 たとえば何かのプログラム言語のモードで font-lock-mode にすると 変数はある色で、キーワードは別の色で、コメントは更に別の色で表示されます。

以前のバージョンの Emacs では同様の事をするパッケージに hilit19 が ありましたが、 hilit19 の利用は現在では標準ではありません (しかし `hilit19.el' は Emacs に付属しています)。 現在 hilit19 は誰も保守していません。

font-lock-mode にするには M-x font-lock-mode と入力してください。

特定のメジャーモードで font-lock-mode にするには モードの hook を使ってください。 たとえば c-modefont-lock-mode にするには 次のように `.emacs' に書き加えてください。

 
(add-hook 'c-mode-hook 'turn-on-font-lock)

メジャーモードによらずに font-lock-mode にするには `.emacs' に 次のように書き加えてください。

 
(global-font-lock-mode 1)

これで font-lock-global-mode にある すべてのメジャーモードで font-lock-mode になります。 pie-ala-mode でファイルを編集するときに pie-ala-mode に対する font-lock-mode の定義がなければそのバッファに対しては 上の式は意味を持ちません。

font-lock-mode を用いた強調表示には時間がかかるので、 表示が遅いことにいらいらさせられるかもしれません。 これを回避するための仕組みがいくつかあります。

Emacs 21 以降では font-lock-modejit-lock-mode の提供する 新しい その場での(Just-In-Time)文字の装飾 を利用します。 jit-lock-mode はバッファの見えていない部分に対しての 文字の装飾を実際に表示されるまで遅らせることができます。 また Emacs が入力待ち状態になったときには変更を加えます。 この様にすることで表示にかかる時間を最小限に抑えています。 jit-lock-mode の設定については C-h f jit-lock-mode RET で 説明を読んでください。

Emacs 20 以前では装飾レベルを設定することができます。 装飾レベルにはささやかなものから派手なものまであり、 派手な装飾ほど時間(または速いマシン)が必要です。 装飾レベルは font-lock-maximum-decoration で決まります。 nil が標準の装飾(大抵は最も簡素な装飾)で、 t が最も派手な装飾となります。 その場合は `.emacs' に次の様に書き加えます。

 
(setq font-lock-maximum-decoration t)

モードごとに装飾レベルを設定することもできます。 詳しい方法は C-h v font-lock-maximum-decoration RET で 説明を読んでください。

Emacs 20 以前では文字装飾に fast-lock-modelazy-lock-mode が あります。これらは Emacs 21 の jit-lock-mode に相当します。 lazy-lock-mode の有利な点はある条件が満たされたときにだけ 装飾をすることです。それはたとえばある一定期間 Emacs が入力待ちに なった時であるとか、スクロールした時などです。 詳しくは C-h f lazy-lock-mode RET (M-x describe-function RET lazy-lock-mode RET) で説明を読んでください。

C-h f font-lock-mode (M-x describe-function RET font-lock-mode RET) で font-lock-mode の説明も参考にして下さい。

詳細については font-lock-mode FAQ を読んでください。 FAQ は が保守していて、 次のところから入手可能です。

ftp://cs.uta.fi/pub/ssjaaa/ema-font.gui

文字装飾付きで(色付けやフォント指定などをしたまま) バッファの内容を印刷したい時は M-x ps-print-buffer-with-faces または M-x ps-print-region-with-faces を利用してください。 これは PostScript プリンタまたはインタプリタ(Ghostscript など)を必要とします。 変数 ps-printer-name, ps-lpr-command, ps-lpr-switches の説明を参考にして下さい。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.45 ウィンドウの一番上や下から移動するときに一行だけスクロールさせる方法は?

"texi/emacs21/ウィンドウの一番上や下から移動するときに一行だけスクロールさせる方法は?"へのコメント(無し)

`.emacs' に次の様に書き加えてください。

 
(setq scroll-step 1)

See Info file `emacs', node `Scrolling'.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.46 選択領域を入力で置き換えるようにする方法は?

"texi/emacs21/選択領域を入力で置き換えるようにする方法は?"へのコメント(無し)

delete-selection-mode を使ってください。 delete-selection-mode にするには `.emacs' に次の様に書き加えてください。

 
(delete-selection-mode t)

delete-selection-mode の説明 (M-x describe-function RET delete-selection-mode RET で読めます)には次の様に書かれています。

有効になっているときは選択領域を入力で置き換えます。 無効になっているときはポイント位置にテキストを挿入するだけです。

delete-selection-mode が有効になっているときは 選択領域を DEL で削除できます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.47 MS-DOS 形式のテキストファイルを Emacs で編集する方法は?

"texi/emacs21/MS-DOS形式のテキストファイルをEmacsで編集する方法は?"へのコメント(無し)

Emacs 20 では MS-DOS(と Windows)のファイルを自動的に判別して扱うので 特に意識することなくファイルを編集することができます。

MS-DOS 形式のファイルを編集している時は、モードラインにそれが表示されます。 Unix や GNU/Linux システム、Mac では `(DOS)' と左端のほうに表示されます。 DOS や Windows ではバックスラッシュ(`\')が表示されます。

Emacs 19 以前では `crypt++' パッケージを入手してください (8.3 Emacs の配布パッケージに含まれない Emacs Lisp パッケージの入手方法は? (2004/07/29) 参照). `crypt++' パッケージを使うと MS-DOS と Unix の改行コードの違いを 意識することなくファイルを編集できます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.48 ピリオドの後にスペースを入力した時に自動的に改行させる方法は?

"texi/emacs21/ピリオドの後にスペースを入力した時に自動的に改行させる方法は?"へのコメント(無し)

は `.emacs' に次の様に書き加えると良いと言っています。

 
(setq sentence-end "[.?!][]\"')}]*\\($\\|[ \t]\\)[ \t\n]*")
(setq sentence-end-double-space nil)



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端]

5.49 シェルモードで ls を使うと表示される変な文字列を消す方法は?

"texi/emacs21/シェルモードでlsを使うと表示される変な文字列を消す方法は?"へのコメント(無し)

ls が `ls --color' にエイリアスされているためです。 この問題を回避するには次の様な方法があります。


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端]