摘要
本文介绍一个可视化的书签插件 —— vim-bookmarks, 支持高亮、跨文件、书签持久化、预览所有书签、书签注解等功能.
简介
vim-bookmarks 插件旨在解决 Vim
自带书签无法高亮、无法持久化、难于记忆的问题,而且解决的非常漂亮. 下面列出其主要特性:
- 单行书签切换
⚑
- 单行的注释(说明)书签
☰
- 在
quickfix
窗口中访问所有书签 - 书签自动保存,下次开启自动加载
- 针对工作目录的独立书签(可选)
- 高度可定制
- 可以和
Unite
插件的quickfix
结合 - 不依赖
Vim
自身的marks
先睹为快
下面是官网的演示,这里盗个图 XD
安装
Note: 请确保已经正确安装了 Pathogen
插件,如果没有安装,请参考 Hacking Vim: 插件管理器Pathogen(02)
本篇文章的代码在 https://github.com/NsLib/blog-vim-proj/tree/bookmarks
cd ~/.vim/bundle
git clone git@github.com:MattesGroeger/vim-bookmarks.git --depth=1
rm -rf ~/.vim/bundle/vim-bookmarks/.git
配置
在 ~/.vimrc
中添加如下配置:
" vim-bookmarks
let g:bookmark_highlight_lines = 1 " 高亮显示书签行
配置颜色(根据自己的喜好,替换掉 whatever
)
highlight BookmarkSign ctermbg=whatever ctermfg=whatever
highlight BookmarkAnnotationSign ctermbg=whatever ctermfg=whatever
highlight BookmarkLine ctermbg=whatever ctermfg=whatever
highlight BookmarkAnnotationLine ctermbg=whatever ctermfg=whatever
更多配置(基本上不会更改):
选项 | 默认值 | 描述 |
---|---|---|
let g:bookmark_sign = '>>' | ⚑ | 书签符号 |
let g:bookmark_annotation_sign = '##' | ☰ | 注释(说明)书签符号 |
let g:bookmark_save_per_working_dir = 1 | 0 | 是否针对工作目录保存书签 |
let g:bookmark_auto_save = 0 | 1 | 是否自动保存书签 |
let g:bookmark_auto_save_file = '/bookmarks' | $HOME .’/.vim-bookmarks’ | 存储书签的文件(bookmark_save_per_working_dir开启后此配置将被忽略) |
let g:bookmark_auto_close = 1 | 0 | 在 quickfix 窗口选中书签后,是否自动关闭 quickfix 窗口 |
let g:bookmark_highlight_lines = 1 | 0 | 是否高亮书签行 |
let g:bookmark_show_warning = 0 | 1 | 删除所有书签时,是否显示警告信息 |
let g:bookmark_center = 1 | 0 | 是否跳转后的书签行居中 |
let g:bookmark_no_default_key_mappings = 1 | 0 | 是否使用默认的快捷键 |
基本用法
功能 | 快捷键 | 命令 |
---|---|---|
添加/删除书签(当前行) | mm | :BookmarkToggle |
添加/编辑/删除当前行注释书签 | mi | :BookmarkAnnotate <TEXT> |
跳转到当前 buffer 的下一个书签 | mn | :BookmarkNext |
跳转到当前 buffer 的前一个书签 | mp | :BookmarkPrev |
在 quickfix 窗口中列出所有书签(toggle) | ma | :BookmarkShowAll |
清除当前 buffer 内的所有书签 | mc | :BookmarkClear |
清除所有 buffer 内的书签 | mx | :BookmarkClearAll |
保存书签到文件 | :BookmarkSave <FILE_PATH> | |
从文件加载书签 | :BookmarkLoad <FILE_PATH> |
下面是一个简单的演示:
结语
这里简单说下我的应用场景,剩下的同学们就发挥自己的想象力吧 XD
- 最基本的书签功能,写代码的时候可能要在几个点相互跳转
- 读源码的时候,
ctags + cscope
有时候回调比较麻烦,这时候书签就派上用场了 - 做代码
review
的时候,可以预先把审查点标记出来