Vim 带 ctags 的降价导航:使用 'tagbar' + 'markdown2ctags' 和 'vim-pandoc'

Vim markdown navigation with ctags: using 'tagbar' + 'markdown2ctags' with 'vim-pandoc'

全部,

我希望能够使用 Vim Tagbar plugin with markdown2ctags 来浏览我的降价文件。

我无法自动生成标签文件,因为根据 :set filetype? 的文件类型当前设置为 pandoc。那是因为我安装了 vim-pandoc 插件。但是,如果我将 filtype 更改为 markdown 一切正常。

我可以控制两个项目:我的 ~/.vimrc 文件和我的 ~/.ctags 文件。有没有人知道应该如何设置?我尝试在下面的摘录中将 markdown 更改为 pandoc,但这没有帮助。

编辑:根据@IngoKarkat 的评论,因为 markdown2ctags 正在处理我的 tags 文件的创建,.ctags设置无关紧要。

来自我的 ~/.vimrc 文件...(根据降价文件的 Tagbar instructions 设置)

let g:tagbar_type_markdown = {
    \ 'ctagstype': 'markdown',
    \ 'ctagsbin' : '~/.vim/plugged/markdown2ctags/markdown2ctags.py',
    \ 'ctagsargs' : '-f - --sort=yes --sro=»',
    \ 'kinds' : [
        \ 's:sections',
        \ 'i:images'
    \ ],
    \ 'sro' : '»',
    \ 'kind2scope' : {
        \ 's' : 'section',
    \ },
    \ 'sort': 0
\ }

...和我的 ~/.ctags 文件(编辑:未使用,但仍包含)

--langdef=markdown
--langmap=markdown:.mkd
--regex-markdown=/^#[ \t]+(.*)//h,Heading_L1/
--regex-markdown=/^##[ \t]+(.*)//i,Heading_L2/
--regex-markdown=/^###[ \t]+(.*)//k,Heading_L3/

谢谢,

肖恩

我找到了一些解决问题的办法。我将它们列在这里以防有人发现它们有用。

解决方案 1:将 pandoc 文件类型重新定义为 markdown 文件类型

我查看了 vim-pandoc pandoc.txt 文件,找到了解决方案。相关资料:

To enable pandoc functionality for markdown files while using  the markdown
filetype and syntax, use
>
     let g:pandoc#filetypes#handled = ["pandoc", "markdown"]
     let g:pandoc#filetypes#pandoc_markdown = 0

Note: vim-pandoc's developers mostly use pandoc's markdown syntax, so
coverage for it is more complete than for the other filetypes.

现在正确设置了文件类型,一切正常。 ~/.vimrc 应该是(适当替换您自己的 ctagsbin 路径):

let g:pandoc#filetypes#handled = ["pandoc", "markdown"]
let g:pandoc#filetypes#pandoc_markdown = 0

let g:tagbar_type_markdown = {
    \ 'ctagstype': 'markdown',
    \ 'ctagsbin' : '~/.vim/plugged/markdown2ctags/markdown2ctags.py',
    \ 'ctagsargs' : '-f - --sort=yes --sro=»',
    \ 'kinds' : [
        \ 's:sections',
        \ 'i:images'
    \ ],
    \ 'sro' : '»',
    \ 'kind2scope' : {
        \ 's' : 'section',
    \ },
    \ 'sort': 0
\ }

解决方案 2:定义新的 pandoc 标签栏类型

将以下内容添加到您的 ~/.vimrc

let g:tagbar_type_pandoc = {
    \ 'ctagstype': 'pandoc',
    \ 'ctagsbin' : '~/.vim/plugged/markdown2ctags/markdown2ctags.py',
    \ 'ctagsargs' : '-f - --sort=yes --sro=»',
    \ 'kinds' : [
        \ 's:sections',
        \ 'i:images'
    \ ],
    \ 'sro' : '»',
    \ 'kind2scope' : {
        \ 's' : 'section',
    \ },
    \ 'sort': 0
\ }

一切正常!这是我的首选解决方案。

解决方案 3:使用内置 pandoc :TOC 命令。

vim-pandoc :TOC 命令生成一个导航菜单,但是,我不喜欢它以及边栏标签栏菜单。但它是内置的默认设置。