无人小站

Vim 插件 tagbar(2016.4.16更新)

JP-Liu VimVimPluginMarkdown

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.cnfvimrc 中,在 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 那样把前面的#去掉(去掉的话会无法区分层级),但是效果还是可以的。

Vimplugin-tagbar1

上面这个是自定义 Markdown 的 ctags.cnf 后 Markdown 文件显示的大纲。

JP-Liu
懒人一个