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を開くときの処理は
- タイムスタンプが同じ場合 (=ファイルは変更されてない)
- 行番号の部分を開く
- タイムスタンプが変わっている場合(=ファイルは変更されている)
- 保存してある{行番号,前後のテキスト}の情報から新しい行番号を推定
- 行番号を更新
- 行番号の部分を開く
という風になっています.
Emacs の bookmark が使いやすいのは,こういう仕組みが裏で動いているためなのです.