Emacsの便利機能:bookmark

emacs には bookmark 機能があります

3行でまとめると

  • Emacs は {ファイル名,行番号} のペアをbookmarkとして登録できる
  • ファイルが編集され行番号が変わると bookmark は自動更新される
  • とりあえず「M-x bookmark- で関数を検索」 だけ覚えておけばOK

キーバインドなど

覚えられない時は「M-x bookmark- で関数を検索」とだけ覚えておきましょう

キーバインド  機能 対応する関数
C-x r m カーソルがある行をブックマークに登録 bookmark-set
C-x r b ブックマークにjump bookmark-set
C-x r l ブックマーク一覧 bookmark-bmenu-list
ブックマーク削除 bookmark-delete

emacs の bookmark のスゴイトコロ


bookmark は{ファイル名,行番号}のペアになっていますが,ファイルが変更されると行番号が変わる場合もあります.

その場合 bookmarkは新しい行番号へと自動更新されます.

仕組みとしては,まずbookmarkのデータ構造は

  • bookmark は ~/.emacs.d/bookmarks に保存されている
  • 中身は {ファイル名,行番号,前後のテキスト,ファイルのタイムスタンプ}のリスト

となっていて,bookmarkを開くときの処理は

  • タイムスタンプが同じ場合 (=ファイルは変更されてない)
    1. 行番号の部分を開く
  • タイムスタンプが変わっている場合(=ファイルは変更されている)
    1. 保存してある{行番号,前後のテキスト}の情報から新しい行番号を推定
    2. 行番号を更新
    3. 行番号の部分を開く

という風になっています.

Emacs の bookmark が使いやすいのは,こういう仕組みが裏で動いているためなのです.