在一个很长的 Markdown 文档里要准确跳转到某标题并不容易,如果像 Word 那样有个导航窗格就好了。
我的完整 Vim 配置托管在 GitHub,可供参考:[config-files](https://github.com/mzlogin/config-files)
这里我们借助于 tagbar 插件实现导航窗格。当然 tagbar 的功能远不限于此,可以为 C、C++、Python 和 Java 等很多语言提供类和方法列表视图等等,详见 [tagbar](https://github.com/majutsushi/tagbar)。
推荐使用 [Vundle](https://github.com/VundleVim/Vundle.vim) 管理 Vim 插件,这样就可以简单几步安装插件了。
Plugin 'majutsushi/tagbar'
tagbar 正常工作依赖于 Vim 7.0+ 和 Exuberant ctags。
下载地址:http://ctags.sourceforge.net/
下载后将 ctags 可执行文件放置到一个在 PATH 环境变量的文件夹里,或者 Vim 安装目录的 Vim74 文件夹下,比如我是将 ctags.exe 放在 `D:\Program Files (x86)\Vim\vim74` 文件夹下。
tagbar 默认并不支持 Markdown 文件,但配置一下就好了。
--langdef=markdown
--langmap=markdown:.md
--regex-markdown=/^#{1}[ \t]*([^#]+.*)/. \1/h,headings/
--regex-markdown=/^#{2}[ \t]*([^#]+.*)/. \1/h,headings/
--regex-markdown=/^#{3}[ \t]*([^#]+.*)/. \1/h,headings/
--regex-markdown=/^#{4}[ \t]*([^#]+.*)/. \1/h,headings/
--regex-markdown=/^#{5}[ \t]*([^#]+.*)/. \1/h,headings/
--regex-markdown=/^#{6}[ \t]*([^#]+.*)/. \1/h,headings/
这表示提取 Markdown 文件里的一到六级标题,并使用空格缩进表示层次。
let g:tagbar_type_markdown = {
\ 'ctagstype' : 'markdown',
\ 'kinds' : [
\ 'h:headings',
\ ],
\ 'sort' : 0
\ }
配置 tagbar 支持 Markdown。
nnoremap <leader>tb :TagbarToggle<CR>
现在你可以使用 `<leader>tb` 来随时开/关导航窗格了。
let g:tagbar_width = 30
let g:tagbar_left = 1
至此,大功告成了!