Hacking Vim: bookmarks(06)

来源:互联网 发布:淘宝wap访客是什么意思 编辑:程序博客网 时间:2024/06/05 11:42

摘要

本文介绍一个可视化的书签插件 —— 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/bundlegit clone git@github.com:MattesGroeger/vim-bookmarks.git --depth=1rm -rf ~/.vim/bundle/vim-bookmarks/.git

配置

~/.vimrc 中添加如下配置:

" vim-bookmarkslet g:bookmark_highlight_lines  = 1 " 高亮显示书签行

配置颜色(根据自己的喜好,替换掉 whatever)

highlight BookmarkSign ctermbg=whatever ctermfg=whateverhighlight BookmarkAnnotationSign ctermbg=whatever ctermfg=whateverhighlight BookmarkLine ctermbg=whatever ctermfg=whateverhighlight 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 :BookmarkPrevquickfix 窗口中列出所有书签(toggle) ma :BookmarkShowAll 清除当前 buffer 内的所有书签 mc :BookmarkClear 清除所有 buffer 内的书签 mx :BookmarkClearAll 保存书签到文件 :BookmarkSave <FILE_PATH> 从文件加载书签 :BookmarkLoad <FILE_PATH>

下面是一个简单的演示:

我的演示

结语

这里简单说下我的应用场景,剩下的同学们就发挥自己的想象力吧 XD

  • 最基本的书签功能,写代码的时候可能要在几个点相互跳转
  • 读源码的时候,ctags + cscope 有时候回调比较麻烦,这时候书签就派上用场了
  • 做代码 review 的时候,可以预先把审查点标记出来
0 0