1. 内置命令
pop-global-mark, 一般绑定在C-x C-@ 或者 C-x C-SPC;
pop-tag-mark, M-*, 返回到调用M-.的地方;
C-u C-SPC,返回到前面mark的位置,最多16个,参考:Mark Ring
2. Bookmark plus
参考:http://emacswiki.org/emacs/BookmarkPlus#toc18
1) 浏览代码时,自动保留浏览历史位置,可以前后跳转
这个功能 automatic bookmarking 可以实现,此模式保存的是autonamed类型的mark;
bmkp-auto-idle-bookmark-mode:针对当前buffer的,打开automatic bookmarking 模式;
在当前文件跳转:C-x p <up>/<down>/n/p/C-n/C-p (bmkp-previous-bookmark-this-file/buffer-repeat)
bmkp-global-idle-bookmark-mode:对所有文件打开这个模式;
打开上面的模式,然后,按照2)中的方法,选择类型为autonamed的navlist,可以全局前后跳转了;
相关设置:
bmkp-auto-idle-bookmark-mode-delay:
设置延时多少秒自动设置bookmark,默认60s;
bmkp-auto-idle-bookmark-min-distance:
设置两个bookmark之间最短距离,小于这个距离,不会自动设置第二个bookmark;默认1000字节;
bmkp-auto-light-when-set:
高亮显示bookmark;
2) 代码导航浏览,比1)更可控的前后跳转 --> Bookmark Navigation List (navlist)
C-x p : :
bmkp-choose-navlist-of-type
,
按类型选择导航的标签集合,如:autonamed, dired等C-x p B:
bmkp-choose-navlist-from-bookmark-list
, 按列表文件/Buffer选择导航的标签集合,如:*Bookmark List*等;
bmkp-next-bookmark
和bmkp-previous-bookmark
用于在navlist中前后跳转,到顶了会从头开始;全局的,不限于一个buffer中;
3)
C-x p f :bmkp-next-bookmark-repeat, C-x p b:bmkp-previous-bookmark-repeat;
4)
*BookmarkList*
一个临时的列表,内容是当前正在使用的列表;
5)C-x p e :edit-bookmarks
在*BookmarkList*中列出当前存在的bookmark;
6) autonamed bookmarks
C-x p RET 在当前创建一个autonamed类型的bookmark;
------
7) 给bookmark加tag:
a) bmkp-add-tags RET,然后选择bookmark,可以用TAB来补全
b) RET,然后可以选择已有的tag,用TAB可以补全已有的tag,也可以直接输入新的tag,然后RET,然后可以继续输入第二个tag,如果部署如tag名,直接RET,完成tag标记;
8) 给文件加 tag:bmpk-tag-a-file
9) 列出所有tags:bmpk-list-all-tags
10) 编辑Bookmark
C-x p e打开*Bookmark List*,在其中可以对指定bookmark编辑,命令多是单个按键,如:r表示重命名,如果不在*Bookmark List*中需要加C-x p前缀快捷键序列,下面描诉相关编辑命令:
a) r:重命名,可以重新更改bookmark name和重新指定目标文件;
b) e:编辑bookmark所有信息,出现一个编辑buffer,C-c C-c结束编辑:
c) T e:出现一个*Edit Tags for Bookmark xxx* 编辑bookmark的tags;
T +:添加一个标签
T - :去掉一个标签
d) T r:重命名标签,影响所有Bookmark;
---------
11) 给bookmarking加mark,marked bookmarks
在*Bookmark List*中:
a) % m:通过正则表达式来mark,mark后,用'>'表示,如下图:
b) U:取消所有mark;
c) t:切换marked状态,作用于所有bookmark;
4. 不同类型的bookmark
1) autofile bookmark: bookmarks that have the same name as their target files. They give you the effect of using files themselves as bookmarks.用于给文件加mark,而不在乎在文件中的什么位置。
C-x p c a , bmkp-bookmark-a-file :添加autofile类型的标签;该命令用到了ffap(find-file-at-point),第一次运行可能需要先M-x ffap,加载该ffap模块;
C-x j a, bmkp-autofile-jump:跳转到autofile类型的标签;
参考:http://www.emacswiki.org/emacs/BookmarkPlus#toc34
2) bookmark-file bookmark
3) autonamed bookmark
bmkp-toggle-autonamed-bookmark-set/delete: 设置/删除bookmark;
5. Bookmark-file
用于保存bookmarks。当前的所有Bookmarks,默认情况下
处于*Bookmark List* buffer中,这个缓存默认对应于一个默认的bookmark-file文件~/.emacs.tmp,这个文件可以通过
选项
bookmark-default-file
来更改;如果在运行中需要使用另外一个bookmark-file,可以通过命令:
bmkp-empty-file创建一个空的bookmark-file,然后可以通过
bmkp-switch-bookmark-file切换到那个bookmark-file中;保存当前的bookmarks到bookmark-file可以用bookmark-save;
分清三个层次的概念:
1)当前的bookmarks:
逻辑上的
2)*Bookmarks List* buffer:
内存中的
3) Bookmark-file:
磁盘上的
buffer保存的就是当前的bookmarks,C-x p e可以查看这个buffer,这个buffer对应的是一个磁盘文件bookmark-file;
这三个概念基础是当前的bookmarks,
*Bookmarks List*
下面罗列并比较相关的命令:
C-x p 0,
bmkp-empty-file:(新建)创建一个空的bookmark-file;
:(打开)把当前的bookmarks替换为另一个bookmarks中的文件;
bmkp-switch-bookmark-file
bookmark-save:(保存)保存当前的Bookmarks到bookmark-file;、
bookmark-write:(另存);
C-x p L,
-create:如果文件不存在,等于
bmkp-switch-bookmark-file
+
bmkp-empty-file
;如果存在等于
bmkp-switch-bookmark-file
;
bmkp-switch-bookmark-file
C-x p l,bookmark-load:(添加)导入一个bookmark-file中的bookmarks到当前的bookmarks中;
Bookmark-file Bookmark
用于表示一个指向bookmark-file的Bookmark,跳转到这种bookmark相当于切换到了指定的bookmark-fle;
C-x p x, bmkp-set-bookmark-file-bookmark:创建 bookmark-file;
*. Bookmark+ 快捷键
C+x p C-h 打开快捷键列表:
Global Bindings Starting With C-x p: