emacs / Tips



TAGジャンプ

タグファイルを作れば、関数名、#defineされた定数、typedefされたタイプ名が、シンボル名として検索できる。

$ cd src
$ etags *.[ch]

emacsの中からなら、diredでディレクトリを呼び出して、M-! etags *.c *h としてもよい。 カレント・ディレクトリに TAGS というファイルができる。 emacsでソースを呼び出して、TAGジャンプさせる

  • M-. 定義部分に飛ぶ
  • C-x 4 . 別ウィンドウに表示する

Time Stamp

ファイルの最初から8行以内に Time-stamp: <> と書いてから ESC-x time-stamp とすれば時刻を入れてくれる。.emacs でカスタマイズして、Last-Update 等のようにファイルの保存時に自動的に入れることも出来る。

<愚痴>たったこれだけ(Time Stamp を入れる)のことをどうやるのか調べる手段がなさすぎ。ソースを読めって..最近の Linux Distribution では、emacs-lisp のソースは入ってないし、めったに使わない情報のために膨大なソースを入れるのもなんだかなぁ</愚痴>

X11 Clipboard とリージョン(region)

xtermの表示内容をマウスの左ボタンで選択して、別のxtermに中ボタンで貼り付けるという操作は、直感的でわかりやすいので良く使う。

ほんの数行の設定を別のコンピュータに移す場合、いちいちファイルを作って転送してとやるより、端末を呼び出してその場で編集してしまったほうが簡単だ。 ところが、xtermの選択範囲(x11のselection)を、emacsの編集画面で中ボタンを押して貼り付けようとすると、成功するときと失敗するときがある。 emacsを立ち上げてから一度もリージョン(region)を使っていないとうまくいくようだが、 そうで無い場合は、リージョンとして保存してあるバッファの内容を貼り付けてしまう。

M-x clipboard-yank

というコマンドを使えば、x11のclipboadの内容を貼り付けることができる。

ところが、これでも貼り付けに失敗することがある。xtermで左ボタンを選択してできる selection 領域は、clipboard ではないから、clipboard-yank では出てこないからだ。 面倒だが、xclipboard を立ち上げて New ボタンを押して selection を clipboard に 変えて、clipboard-yank としなければならないようだ。

逆に emacs のリージョンを clipboard に送るには、.emacs に以下のように書いておく必要がある。

(setq x-select-enable-clipboard t)

全く「誰か何とかしてくれ」と叫びたくなる面倒さだ。Mac や Windows のクリップボックスが如何に良くできているか(というかポリシーを貫いているか)が分かる例だ。

Quick Reference Key Bindings

コピーペースト

C-SPCマークの設定
ESC-wコピー
C-w切り取り
C-y貼り付け
C-x hバッファ全体のコピー

検索・置換

ESC-xreplace-string
ESC-xquery-replace
SPC 置き換え
DEL スキップ
ESC 終わり
! 以後全て
^ 前へ

履歴

C-/undo
C-x ESC ESCrepeat-complex-command
M-pprevious-complex-command
M-nnext-complex-commnad

日本語入力(leim)

C-\ とするとモードライン・インジケータに 'Aあ' というような表示が出る。 このモードで C-h I <RET> とすると説明が出る。Windows に比べると、 変換がかなり変だったりキー操作がかなり異なるので注意。

quail入力中

Kカタカナに変換

変換候補表示中

C-o文節を伸ばす
C-i文節を縮める
C-f次の文節
C-p前候補
l次の候補グループ
L前の候補グループ
C-cキャンセル

変なローマ字

よみ私の記憶quail
nnn'
ちょうcyouchou
でぃすくdhisukudyisuku