最終更新日 2002/12/07(Sat)

知っていると便利な設定・操作


いわゆる Tips 集といったところでしょうか?

カスタマイズ編

.emacs を編集して設定します。

C-h と DEL を入れ替える

バックスペースを C-h で入力している人も多いかと思います。 しかし、残念ながら Emacs では C-h は デフォルトでヘルプ系コマンドのプレフィックスとなっています。 そこで、バックスペースを C-h で入力したいという人は以下のようにすれば OK です。

(load "term/keyswap")                   ; DEL と C-h を入れ替える

ヘルプのプレフィックスは F1 にも割り振られているので、調べものの場合は F1 を使用しましょう。

C-n でファイルの末尾に勝手に行が追加されるのを防ぐ

ファイルの末尾で C-n (next-line) と操作すると、 新しい行が追加されます。 これがいやな場合は変数 next-line-add-newlinesnil に設定します。

(setq next-line-add-newlines nil)       ; C-n によって新しいラインを追加しない

Emacs 21 ではこの変数のデフォルト値は nil になっていますので、 この設定は不要です。

最後の行に改行コードの入っていないときに自動的に追加する

Emacs では基本的に改行コードは非表示になっているので、 最後の行に改行コードを入れるのを忘れることがあります。 変数 require-final-newlinet に設定すれば、 セーブ時に自動的に追加できるようになります。

(setq require-final-newline t)          ; ファイル末の改行がなければ追加

「チェックはしたいけど、自動的に追加されるのはちょっと...」という人は t 以外の非 nil である値を設定しておくと、 セーブ時にチェックがかかるようになります。 ファイル末の改行がないときには以下のような質問がミニバッファに表示されるので、 y と答えたときだけ改行が追加されます。

Buffer foo.c does not end in newline.  Add one? (y or n)

バッチファイルや.INIファイルのモードを追加する

.emacsに以下の設定を追加すれば、バッチファイル用のモード (bat-generic-mode) や .INI ファイル用のモード (ini-generic-mode) が追加されます。

(require 'generic-x)                    ; 一般的なファイルモード(OS 固有含む)

global-font-lock-mode を使用していれば色も付きます。 モードについては他にもいろいろあります。 どのようなものがあるか知りたい場合は、一覧が変数 generic-mode-list に格納されているので調べてみて下さい。 (なお、当然ですが、bat-generic-mode などは Windows 用です。 UNIX 用には別のモードが用意されています)

編集中はマウスカーソルが邪魔なのでどうにかする

編集中にウィンドウの上にマウスカーソルがあると邪魔になることが良くあります。 Meadow の場合は、以下の設定で編集中にマウスカーソルを消すことができます。 (Meadow 添付の dot.emacs.ja に記載されているので良く知られた設定だと思いますが)

;;; マウスカーソルを消す設定
(setq w32-hide-mouse-on-key t)
(setq w32-hide-mouse-timeout 5000)

しかし、上記の設定は Emacs では使えません。 そこで、Emacs ではマウスを退避させるのに mouse-avoidance-mode を使用します。 以下のものを .emacs に追加すると、 キー操作によってマウスがフレームの右上隅に移動するようになります。

(mouse-avoidance-mode)

引数によって移動方法を指定することができます。

;; カーソルがマウスカーソルに近付くと右上隅に移動し、カーソルが
;; マウスカーソルの元いた位置から遠ざかるとマウスカーソルが戻ってくる
(mouse-avoidance-mode 'exile)

指定できる方法として以下のようなものがあります(一部抜粋)。

banish
キー操作によって右上隅に移動(デフォルト)
exile
カーソルが近付いたときだけ右上隅に移動、その後復帰
jump
カーソルが近付くとランダムに移動

ただ、このモードはホイールマウスと相性が悪いという欠点があります。 (フレームを分割しているときにホイールを回転させると分かる思います)

操作編

以下の操作については .emacs を編集する必要はありません。 操作を覚えればすぐ利用できます。

shell-mode のバッファを複数開く

通常、M-x shell によって shell-mode を開いている状態でもう一度 M-x shell を実行すると、 すでに shell-mode を開いているバッファがアクティブになるだけで、 新しい shell バッファを作成することはできません。 しかし、M-x rename-buffer でバッファの名前を一旦変更してしまうと、 M-x shell で新しくバッファが作成されます。 新しいバッファの名前は *shell* になります。

なお、Emacs 21 では C-u M-x shell とするとバッファの名称を指定して shell-mode を実行することができるので、 ここで新規のバッファ名を指定すれば、 新しい shell-mode のバッファを開くことができます。