如何让tagbar与js文件一起使用

时间:2012-03-23 19:14:46

标签: javascript vim plugins jsctags

如果我打开扩展名为.html的文件,tagbar工作正常。

如果我打开扩展名为.js的文件,则tagbar不会列出任何内容。只需将文件扩展名重命名为.html即可使其正常工作。

如何让tagbar与.js文件一起使用?

3 个答案:

答案 0 :(得分:0)

你试过taglist-plus吗?它使用jsctags,它在我安装此插件的短暂时间内工作正常。

答案 1 :(得分:0)

  • 您正在处理的文件的文件类型(:set ft?)是什么?

  • 您是否安装了ctags和/或jsctags

    从您放置JavaScript文件的位置执行$ ctags -R .和/或$ jsctags .会创建tags文件吗?

    如果是,它包含什么?

  • 如果您使用jsctags,它是最新的吗?那么nodejs呢?

答案 2 :(得分:0)

在编辑 vim 代码时,在 *.ino 文件中使用 tagbarArduinoTasmota 源代码时遇到此问题。< /p>

我必须意识到两件事:

  1. 使 ctags 处理新的文件扩展名(请参阅 https://stackoverflow.com/a/67495267/10050838):对于 ctags-universal,创建一个包含 ~/.ctags.d/local.ctags 的文件 --langmap=c++:+.ino
  2. 让标签栏知道如何处理 arduino 中的 vim 文件类型 :set filetype?(在 vim 中使用 .vimrc 查询文件类型):
let g:tagbar_type_arduino = {
    \ 'ctagstype' : 'c++',
    \ 'kinds'     : [
        \ 'd:macros:1:0',
        \ 'p:prototypes:1:0',
        \ 'g:enums',
        \ 'e:enumerators:0:0',
        \ 't:typedefs:0:0',
        \ 'n:namespaces',
        \ 'c:classes',
        \ 's:structs',
        \ 'u:unions',
        \ 'f:functions',
        \ 'm:members:0:0',
        \ 'v:variables:0:0'
    \ ],
    \ 'sro'        : '::',
    \ 'kind2scope' : {
        \ 'g' : 'enum',
        \ 'n' : 'namespace',
        \ 'c' : 'class',
        \ 's' : 'struct',
        \ 'u' : 'union'
    \ },
    \ 'scope2kind' : {
        \ 'enum'      : 'g',
        \ 'namespace' : 'n',
        \ 'class'     : 'c',
        \ 'struct'    : 's',
        \ 'union'     : 'u'
    \ }
\ }

:help tagbar -> tagbar-extend 中查找操作方法和此定义。 Javascript 和其他定义在 ~/.vim/bundle/tagbar/autoload/tagbar/types/uctags.vim

中给出

可能还有其他方法可以做到这一点。它对我有用(tm)。

剩下要做的唯一一件事:重新打开 *.ino 源文件,点击 <F8> 以显示您的标签栏。

HTH