Let's use bookmarks
Table of Contents
Last modified: 20240720T1459+0900
emacsでは、FILEメニューやフォルダから選択しなくても、一瞬で目的のファイルを開くことができます。日常的によく使うファイルやディレクトリは、ブックマークに登録しておきましょう。
1. 基本
最低限、以下のコマンドを意識すれば使えます。
C-x r m | カーソル位置をブックマークする |
C-x r b | 設定されたブックマークにジャンプ |
emacsで何かのファイルを編集している状態で C-x r m
とすると、ミニバッファに Set bookmark named (default: ...) :
という表示が出るので、そのままリターンを押します。次に、そのバッファを閉じて別のファイルを編集しているとき、 C-x r b
とすると、ミニバッファの中に設定済のブックマークが現れます。その中に、今指定した … という名前のブックマークがあるので、そこにカーソルを移動してリターンを押すと、先ほどブックマークしたファイルが開き、そのときのカーソル位置まで移動します。
C-x r
が、ブックマーク(レジスター)関連のキーですが、忘れたときは、 M-x bookmark
とコマンドを打ち込むと、関連するコマンドが出てきますので、そちらから操作するのでもOKです。
M-x bookmark-set | カーソル位置をブックマークする |
M-x bookmark-jump | 設定されたブックマークにジャンプ |
2. 応用:ブックマークメニューの操作
C-x r l | ブックマークメニューを表示 |
ブックマークを管理するためには、ブックマークメニューを用います。ブックマークメニューを開くコマンドは、 C-x r l
です。機能が多く混乱するかもしれないので、使用頻度(あくまで私の場合)を参考に書いておきます。
キー | 機能 | 使用頻度 |
---|---|---|
m | v で表示するブックマークをマークする(複数可) |
|
M | リストのすべてのブックマークを v で表示するようにマークする |
|
v | m や M で選択されたブックマークを、新しいウインドウを開いて表示する |
|
マークしていない場合には、カーソルがあるブックマーク先を開く | ||
t | ファイル名表示のON/OFFを切り替える | |
1 | 一つのフレーム全体に、ブックマーク先を表示する | |
2 | 一つのウインドウにブックマーク先を表示し、もう一つのウインドウに | |
その前に表示していたブックマーク先を表示する | ||
RET | ブックマークメニューを閉じて、ブックマーク先を開く | A |
o | ブックマーク先を、別ウインドウで開き、そこにカーソルを移動 | B |
(ブックマークメニューはそのまま表示されている) | ||
C-o | o と同じだが、カーソルは移動させない |
B |
5 | ブックマーク先を、別のフレームで開く | A |
r | ブックマーク先を変更せず、ブックマーク名だけを変更する | B |
R | ブックマーク名を変更せず、ブックマーク先だけを変更する | B |
d | カーソル位置のブックマークに削除マークを付けて一つ下に移動する | A |
C-d | カーソル位置のブックマークに削除マークを付けて一つ上に移動する | |
D | リストされているすべてのブックマークに削除マークを付ける | |
x | 削除を実行する | A |
s | 現在のブックマークリストを、デフォルトのブックマークファイルに保存 | C |
C-u s | 現在のブックマークリストを、ファイル名を指定して、保存する | C |
l | ファイル名を指定して、ブックマークを読み込む | C |
u | 現在の行のあらゆるマークを削除 | |
DEL | 前の行のあらゆるマークを削除 | |
U | リスト全体のすべてのマークを削除 | |
a | メモを表示 (ブックマークへのメモ (annotation)を参照) | B |
A | すべてのメモを、別ウインドウに表示 | |
e | カーソルがあるブックマークにメモを書く | B |
/ | ブックマークの検索(incremental)を実行 | |
g | 表示をリフレッシュする |
3. 使いやすくするコツ
3.1. 保存のタイミング
標準では、ブックマークは、emacsを終了したときに、 ~/.emacs.d/bookmarks
というファイルに保存されます。言い換えると、emacsを終了しないかぎり、設定したブックマークは保存されません。めったにemacsを終了させたりしない人は、設定したと思っているブックマークが再利用できないので、戸惑うかもしれません。その場合には、ブックマークを設定するたびに、ファイルに書き出して保存するように設定しましょう。
(setq bookmark-save-flag 1)
bookmark-save-flag
には、以下のような値を設定して、ブックマークのファイルへの書き出しをコントロールします。後述のように、ブックマークファイルを作業毎に切り替えて使いたい場合には、 nil
がいいでしょう。
t | emacsが終了したときに保存する |
nil | M-x bookmark-save コマンドが実行されたときだけ保存する |
n (数字) | ブックマークがn回設定されたら保存する |
上の例では、1を設定しているので、ブックマークが一つでも設定されたら直ちに保存します。
3.2. ブックマークファイルの場所
標準では、 ~/.emacs.d/bookmarks
に保存されますが、Dropboxなどのクラウドを使っている場合には、クラウドに置く方が便利です。このファイルの場所は、 bookmark-default-file
という変数で管理されています。
(setq bookmark-default-file "~/Dropbox/dotfile/bookmarks")
この例だと、Dropbox上の、 dotfileというディレクトリの中にブックマークファイルが保存されますので、環境が変わっても、同じブックマークを使えます。
3.3. ブックマークファイルの切り替え
または、作業毎に、異なるブックマークのリストを使いたい場合があるかもしれません。その場合には、先ほどの、ブックマークメニューから、 C-u s
でブックマークを任意の名前で書き出したり、 l
で任意のブックマークファイルをロードしたりすることができます。この場合には、ブックマークの変更が勝手にファイルに書き込まれないように、以下の指定を忘れずに行うのが安全です。
(setq bookmark-save-flag nil)
3.4. ブックマークのメモ
それぞれのブックマークには、メモ(annotation)を付けることができます。 bookmark-use-annotations
の値が t
の場合には、 C-x r m
でブックマークを設定したときに、メモを書くウインドウが開きます。これが nil
のときは、 C-x r l
でリストを表示した状態で、メモを書きたいブックマークにカーソルを置いて、 e
を叩くとウインドウが起動します(デフォルト)。
メモがあるブックマークは、 C-x r l
で表示されるリストで、冒頭に *
マークが付きます。そこで a
を押すとメモが表示されます。 A
を押すと、ブックマークのすべてのリストが、メモ付きで表示されます。
(setq bookmark-use-annotation t)
何のブックマークかわからないと利用しなくなるので、できるだけメモを付けておきましょう。
3.5. キーバインド
個人の感想ですが、デフォルトのキーバインドは、少し使いにくいと感じます。私はよく使う二つのコマンドについては、以下のようにキーを割り当てています。
コマンド名 | デフォルト | |
---|---|---|
M-m | bookmark-set | C-x r m |
M-l | bookmark-bmenu-list | C-x r l |
(bind-key "M-m" 'bookmark-set) (bind-key "M-l" 'bookmark-bmenu-list)
3.6. ブックマークの並ぶ順番
また、このような使い方の場合、ブックマークリストのソート順は、新しく変更されたブックマークから順に並ぶのが使いやすいので、次のように設定します。
(setq bookmark-sort-flag 'last-modified)
一日の作業は、とりあえず M-l
(エスケープキーと l
)を押して、昨日の作業を思い出すことから始まります。
また、気がついたら M-m
を押して、作業経過を記録します。
3.7. 大きなファイルの目次として使う
M-m
でブックマークを登録するとき、ミニバッファに Set-bookmark-named:
というプロンプトが出ます。そのままリターンを押せばブックマークが上書きされますが、何か新しい名前を付けてリターンを押せば、上書きされず、新しいブックマークとして保存されます。同じファイルの中であっても、複数の場所を別々のブックマークとして登録できますので、大きなファイルを編集する場合には、インデックスとしても使えます。
その場合には、とりあえず簡易な名前で、区切りとなる場所を登録しておいて、あとでブックマークメニューから、 r
を使ってわかりやすい名前(たとえば、 draft_chapter1
draft_chapter2
など)に変更するといいでしょう。