void main()
{
int area, volume;
int hight, width, depth;
area = hight * width;
volume = h
次は "hight" という単語を書くつもりです。
void main()
{
int area, volume;
int hight, width, depth;
area = hight * width;
volume = hight
このように補完されます。バッファ内に h で始まる単語が複数あった場合は、カーソル位置から遡って一番近いものをまず補完します。 続けて M-/ をタイプすれば、さらにバッファを遡って補完していきます。
さて、先ほどの状態から、さらに SPC M-/ を2回続けてタイプしてみましょう。
void main()
{
int area, volume;
int hight, width, depth;
area = hight * width;
volume = hight * width
このようになったはずです。
大変便利な動的略語展開ですが、日本語の補完にはまだまだ問題があります。
日本語では、単語の区切りが判別しづらいので、大抵は補完しすぎてしまいます。
ですが、この機能を使うのは、普通の文章よりもプログラミングや HTML, LaTeX 文書のタグ、比較的長い英単語の入力時が多いと思います。
充分この機能の恩恵に与かることができるでしょう。
;; M-SPC で動的略語展開 (global-set-key "\M- " 'dabbrev-expand)注) M-SPC はデフォルトではコマンド just-one-space に割り当てられています。
より細かい設定をしたい人は、costomizeを使って
M-x customize-group → dabbrev
としてみて下さい。
この C-x a i l で登録した略語は、
そのメジャーモードでのみ有効となります。
つまり、さきほどの Java プログラムのソース中で登録した main は
java-mode でのみ展開されます。
よって、例えば同じ略語 main を
登録した略語は、そのままでは Emacs を閉じたら消えてしまいます。
そこで、この略語を保存しておきます。
M-x write-abbrev-file としてください。
すると略語を保存するファイル名を聞かれます。
デフォルトは ~/.abbrev_defs なので、これで良ければ何も入力せずに
Return とすればOKです。
違うファイル名がよければ、適宜指定してください。
Emacs を起動したとき、保存した略語を自動的に読み込んでおくには、.emacs に
(read-abbrev-file)
と書いておきます。
その他の略語の登録方法を挙げておきます。
| キーバインド | コマンド名 | 内容 |
| C-x a g | add-global-abbrev |
カーソル直前の単語の略語を登録する。 登録した略語はどのモードでも使用可能。 |
| C-x a l | add-mode-abbrev | 上と同じだが、現在のモードでのみ有効 |
| C-x a i g | inverse-add-global-abbrev |
カーソル直前の単語を略語とする文字列を登録。 どのモードでも使用可能。 |
| C-x a i l | inverse-add-mode-abbrev |
カーソル直前の単語を略語とする文字列を登録。 登録したモードでのみ使用可能。 |
ちょっと進んだ使い方
customize は M-x customize-group で abbrev を 選んでください。