Vim 插件 tagbar(2016.4.16更新)
Vim 插件 tagbar
更新历史
- 2016.4.16 更新 Vim 中便携化 Ctags 的方法
tagbar 是 Vim 的一个大纲插件,实时更新大纲,用起来不错。 官方 Github,需要有 ctags 支持。
来说说看在 Windows 下怎样配置,tagbar 的配置中重要的有两个,一个是 ctags 程序的位置,如果 tagbar 找不到 ctags.exe 的话,可以直接将 ctags 放在 Vim.exe 所在的目录下,也可以在 tagbar 的配置中用以下的行来指定:
let g:tagbar_ctags_bin = 'C:\Ctags5.8\ctags.exe'
另一个比较重要的是 ctags.cnf的位置,这个文件是用于自定义要添加到大纲的内容的,tagbar 的官方 Wiki中给出了不少 ctags 自身不支持的语言的相关配置,需要将相关的内容添加到 ctags.cnf 与 vimrc 中,在 Windows 下,ctags.cnf 这个文件的默认位置应该是在用户文件夹
下,也就是c:\Users\用户名
这样的文件夹下。
更新:通过 Vim 中的 cd 修改当前目录,以及 set autochdir 来实现 Ctags 的完全便携化。
function! PortableCtags()
silent cd $VIM/vimfiles/ 这个是 ctags 配置文件所在的目录
silent TagbarToggle
silent set autochdir
endfunction
nnoremap <silent> ;sa :call PortableCtags()<cr>
这里额外说一下,tagbar 的官方 wiki 中的 Markdown 配置我个人感觉不太好用,只支持1,2,3级的大纲标题而且会将1,2,3级标题用 Heading_L1,Heading_L2,Heading_L3 这样的定义完全分开,而实际上 Markdown 写文的话格式应该更像:
# 一级
## 二级
### 三级
### 三级
## 二级
### 三级
所以我自己改了一下关于 markdown 的配置
Ctags.cnf
--langdef=markdown
--langmap=markdown:.markdown,.mkd,.md
--regex-markdown=/^(#+)[ \t]+(.*)/\1 \2/h,heading/
vimrc
let g:tagbar_type_markdown = {
\ 'ctagstype' : 'markdown',
\ 'kinds' : [
\ 'h:Headline'
\ ],
\ 'sort' : 0,
\ }
放一张效果图,虽然不能像官方 Wiki 那样把前面的#
去掉(去掉的话会无法区分层级),但是效果还是可以的。
上面这个是自定义 Markdown 的 ctags.cnf 后 Markdown 文件显示的大纲。