[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
オンラインマニュアルの 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
まず 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
モードラインに自動的に現在の行番号を表示させるには 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
`.emacs' に次のように書き加えてください。
(condition-case () (quietly-read-abbrev-file) (file-error nil)) (add-hook 'mymode-mode-hook (lambda () (setq abbrev-mode t))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
auto-fill-mode
にする方法は?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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
拡張子 .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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
バッファに表示されている、例えば `\237' のような一文字は C-s C-q 2 3 7 と入力すると検索できます。 (これは変数 search-quote-char
の値が 17(C-q)の場合です) すべての印字不能文字を検索するには 正規表現(regexp)による検索を行います。 印字不能文字を表す最も簡単な正規表現は印字可能文字の補集合です。
isearch-forward-regexp
や re-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
isearch
などでミニバッファに入力するときは クォートする必要はありません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
選択領域を画面表示に反映させるには、 `.emacs' に次の様に書き加えてください。
(transient-mark-mode t) |
(5.44 構文を強調表示させる方法は? も参考にしてください。)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
検索の際には変数 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
M-x auto-fill-mode で auto-fill-mode
にして下さい。 標準では 70 桁以下で改行されます。 改行位置は fill-column
で設定できます。 自動的に auto-fill-mode
にするについては 5.7 auto-fill-mode
にする方法は? を参照。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Ispell を使ってください。 9.7 Ispell -- Emacs インターフェース付きの C プログラム 参照。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Ispell を使ってください。 Ispell は TeX や *roff 文書のソース 9.7 Ispell -- Emacs インターフェース付きの C プログラム 参照。 Ispell can handle TeX and *roff documents.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
load-path
を設定する方法は?load-path
を設定する方法は?"へのコメント(無し)
一般的に load-path
の値を変更するときは ディレクトリを load-path
に追加します。 /dir/subdir を load-path
に追加するには次の様にします。
(setq load-path (cons "/dir/subdir/" load-path)) |
ホームディレクトリからの相対パスを指定するには次の様にします。
(setq load-path (cons "~/mysubdir/" load-path) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Emacs 配布パッケージに付属する emacsclient
を使えば 既に起動している Emacs と通信してファイルを編集するように指示できます。 そのために Emacs 側で設定をしておく必要があります。
emacsclient
からの要求を受け付けるように Emacs で関数 server-start
を実行します。 コマンドラインから指定するには次の様にします。
emacs -f server-start |
`.emacs' で実行するには次の様にします。
(if 適当な条件 (server-start)) |
これで Emacs は emacsserver
というプログラムを起動します。 emacsserver
は Unix ドメインのソケットを作ります。 ソケットはユーザのホームディレクトリの `.emacs_server' か `/tmp' の `esrv-userid-systemname' に作られます。 どちらに作られるからはシステムに依存します. server-socket-name
を参照のこと.
ニュースリーダやメーラなどが emacsclient
を呼び出すようにするには 環境変数 EDITOR
(VISUAL
かも知れません)の値を `emacsclient' に 設定してください。 このとき emacsclient
のフルパスを指定する必要があるかもしれません。 例:
# csh の場合 setenv EDITOR emacsclient # フルパスを指定する場合 setenv EDITOR /usr/local/emacs/etc/emacsclient # sh の場合 EDITOR=emacsclient ; export EDITOR |
emacsclient
を起動すると、ソケット `.emacs_server' に接続し、 コマンドラインオプションを emacsserver
に渡します。 emacsserver
はこれらの要求を受け取るとその情報を Emacs に送り、 Emacs は入力待ちになった時に指定したファイルを開きます。 (Emacs のコマンドラインオプションと同様にして行数を指定することもできます。) 自動的に Emacs のウィンドウに切り替わるとは限りません。 ファイルの編集を終えたら c-x # (M-x server edit) で サーバに編集が終了したことを通知します。 もし emacsclient
の要求で作成されたバッファが他にもあるときは そのバッファに切り替わります。なければ emacsclient
は終了し、 emacsclient
を起動したプログラムに続行するようにシグナルを送ります。
emacsclient
と emacsserver
は同じファイルシステムを 共有しているマシン上で走らせる必要があります。 emacsclient
が指定するパス名は Emacs が走っているマシンの ファイルシステム上で正しいものでなければいけません。 Emacs のプロセスは emacsclient
が起動したときに サスペンドされていてはいけません。 Unix や GNU/Linux システム上では emacsclient
は 別の X のウィンドウか、Emacs 内部のシェルウィンドウから呼び出さなくては なりません。あるいは screen
や仮想端末などを利用して下さい。
`gnuserv' という `emacsclient'/`emacsserver' の 拡張版が によって作成されたバージョン があります(8.3 Emacs の配布パッケージに含まれない Emacs Lisp パッケージの入手方法は? (2004/07/29) 参照). gnuserv
はインターネットドメインのソケットを使用しているので、 ネットワーク経由でも接続できます。 gnuserv
は任意の Emacs Lisp 式を実行することも可能で、 さらに編集が完了するまでクライアントプログラムが待つ必要はありません。
拡張版 gnuserv
は次のところから入手できます。
ftp://ftp.wellfleet.com/netman/psmith/emacs/gnuserv-2.1alpha.tar.gz
http://meltin.net/hacks/emacs/ にあるのはもっと新しいもので,Emacs 21.2 でテストされています.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
変数 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
switch
文でインデントする方法は?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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Emacs の cc-mode
にはインデントを対話的に設定するための プログラムがあります。その方法については Emacs 付属の
0
+
-
++
--
*
/
(c-set-offset 'syntactic-symbol 'offset) |
syntactic-symbol は C-c C-o の入力の後に指定したシンボルで offset はインデントを表すシンボルです。 (+
, /
, 0
など)
`.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-offset
は cc-mode
がロードされていないと利用できません。
しかし c-mode-hook
は C のソースファイルを編集する時にしか 働かないので注意が必要です。 C++ に対しては c++-mode-hook
が Java に対しては java-mode-hook
が対応します。 これらの(cc-mode
のサポートする)言語すべてに対して インデントを有効にしたければ c-mode-common-hook
を利用してください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Emacs 21 以降では標準でこの機能が使えます。 truncate-lines
の値が non-nil
なら、 ポイントが右端もしくは左端からはみ出した時に 自動で横方向にスクロールします。
Emacs 20 では hscroll-mode
を使ってください。 C-h f hscroll-mode RET で読める説明を書いておきます。
ポイントがウィンドウの右か左にはみ出たときに自動的に横方向にスクロールします。
turn-on-hscroll
を hook で 使うと良いでしょう。
(add-hook 'text-mode-hook 'turn-on-hscroll) |
hscroll-margin
でどのくらいまでポイントが ウィンドウの端に近付いたらスクロールするか決まります。
hscroll-step-percent
でスクロールの際に どの程度スクロールさせるか決まります。[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
M-x overwrite-mode (マイナーモードです)。これで 挿入モードと上書きモードを切り替えられます。
システムによっては Insert キーで 挿入モードと上書きモードを切り替えられます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
は次の様に書いています。
音響ベルではなくて視覚ベルを使うように Emacs を設定して、 さらに視覚ベルは何もしないように設定すればいいんだ。
環境変数 TERMCAP
に
... :vb=: ... |
という設定を追加して
(setq visible-bell t) |
を評価すれば期待に沿えると思う。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
ベルの音量と持続時間は 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Emacs 20 以降では標準でそうなっています。 Emacs 20.2 の `etc/NEWS' ファイルには次のように書かれています。
** |
もし 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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' のほかにも次の様なものがあります。
vi
の様に % キーで対応する括弧に 移動できます。しかもカーソルが括弧の上にないときは普通に % が 挿入されます。
;; By an unknown contributor (global-set-key "%" 'match-paren) (defun match-paren (arg) "Go to the matching paren if on a paren; otherwise insert %." (interactive "p") (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) (t (self-insert-command (or arg 1))))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
M-x hide-ifdef-mode (マイナーモードです)。 Emacs に付属している `cpp.el' を調査する方法もあります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
(`.' は 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
See Info file `emacs', node `X Resources' 参照。
Emacs が X toolkit を使ってコンパイルされたものならメニューバーの リソース名などを調べるのにリソースエディタを使うこともできます。 X11R5 以降なら editres が使えます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
Emacs Lisp の 式 を実行(lisp の言葉では 評価 と言う)するには 幾つかの方法があります。
emacs-lisp-mode
では C-M-x でポイントの直前、あるいは ポイントを含む top-level の式が評価される。
load
を使う。)
次の関数を使っても Lisp 式を評価することができます。
|
詳細については 3.4 Emacs Lisp ドキュメントの入手方法は? (2004/07/28) 参照。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
変数 default-tab-width
の値を設定してください。 たとえば 10 カラムにしたかったら次の様に `.emacs' に書き加えてください。
(setq default-tab-width 10) |
変数 tab-width
と変数 tab-stop-list
を混同しないで下さい。 tab-width
は表示を制御する変数で、 tab-stop-list
は特定のモードで TAB を入力した時に バッファに挿入される文字を決定します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
M-x underline-region RET
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
C-x ( と C-x ) で一連のコマンドを実行するキーボードマクロを 定義してから M-0 C-x e と入力してください。
コマンドがエコーエリアに出力するメッセージは抑制されます。
数回だけコマンドを繰り返したい場合は C-x z も使えます。 5.27 vi の `.' コマンドと等価なコマンドはありますか? 参照。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
M-x picture-mode.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
X などのウィンドウシステム上で Emacs を実行しているならC-z でアイコン化し ます。文字端末上ならサスペンドします。詳しくは See Info file `emacs', node `Frame Commands' を参照してください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
See Info file `emacs', node `Regexps' 参照。
または は `\|' です。`|' ではありません。 同様にグループ化オペレータは `\(' と `\)' です。 また文字列のシンタックスではバックスラッシュ(`\')を表すには `\\' を使います。 つまり正規表現 `xxx\(foo\|bar\)' の文字列による表示は "xxx\\(foo\\|bar\\)"
になります。
バックスラッシュを二重にすることを忘れないように!
grep
や sed
などとは異なり、 文字集合が改行文字(LFD, C-j `\n')を含んでいなければ その補集合(`[^...]')は改行文字を含みます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
etags
のドキュメントはどこにありますか?etags
のドキュメントはどこにありますか?"へのコメント(無し)
etags
の man page は emacs
の man page と同じ場所にあるはずです。
コマンドラインオプションの簡単な説明は `etags -H' で見られます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
バックアップは重要なのでそのようなことは勧められません。
バックアップファイル(や "重要でない" ファイル)を 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
auto-save-mode
にしない方法は? (2004/07/28)
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
本当に行番号という情報からその行に移動したいのですか? コンパイラがエラーメッセージを出した場所に移動したいのではありませんか? もしそうなら 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 g で goto-line
が 起動されるようになります。
(global-set-key "\C-xg" 'goto-line) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
@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
を適当なキーマップに置き換えれば 特定のモードに対してメニューを追加することができます。
二番目の引数は新しい項目のメニューでの位置を表しています。 edit
を file
に置き換えれば @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
を新しい位置を指定して評価してください。
詳細については
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
最も単純な方法はキーマップを 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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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-mode
で font-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-mode
は jit-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-mode
や lazy-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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
`.emacs' に次の様に書き加えてください。
(setq scroll-step 1) |
See Info file `emacs', node `Scrolling'.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
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 ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
は `.emacs' に次の様に書き加えると良いと言っています。
(setq sentence-end "[.?!][]\"')}]*\\($\\|[ \t]\\)[ \t\n]*") (setq sentence-end-double-space nil) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |
ls
を使うと表示される変な文字列を消す方法は?ls
を使うと表示される変な文字列を消す方法は?"へのコメント(無し)
ls
が `ls --color' にエイリアスされているためです。 この問題を回避するには次の様な方法があります。
EMACS
を調べてエイリアスしない様にする。 Emacs はサブシェルを実行するとき、環境変数 Emacs
の値を `t' に設定します。
ansi-color
パッケージ(Emacs 21 以降には付属しています)を利用する。 このパッケージを使うと ANSI のエスケープシーケンスを解釈して 色を付けることができます。[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] |