1

全部,

我希望能够使用带有markdown2ctags的 Vim Tagbar插件来导航我的 markdown 文件。

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

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

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

从我的~/.vimrc文件中...(根据标记栏的降价文件说明设置)

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]+(.*)/\1/h,Heading_L1/
--regex-markdown=/^##[ \t]+(.*)/\1/i,Heading_L2/
--regex-markdown=/^###[ \t]+(.*)/\1/k,Heading_L3/

谢谢,

肖恩

4

1 回答 1

2

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

解决方案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命令产生一个导航菜单,但是,我不喜欢它以及侧边栏标签栏菜单。但它是内置的默认设置。

于 2019-11-08T14:56:09.747 回答