如何让标签栏使用js文件



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

如果我打开一个扩展名为.js的文件,那么标签栏不会列出任何内容。只要将文件扩展名重命名为.html就可以了。

如何让标签栏与.js文件一起使用?

您尝试过taglist plus吗?它使用jsctags,在我安装这个插件的短暂时间里,它运行得很好。

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

  • 您是否已安装和工作ctags和/或jsctags

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

    如果是,它包含什么?

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

在编辑Tasmota代码时,在*.ino文件中使用vimtagbarArduino源代码时遇到此问题。

我必须意识到两件事:

  1. 使ctags处理新的文件扩展名(请参阅https://stackoverflow.com/a/67495267/10050838):对于ctags-universal,创建一个包含--langmap=c++:+.ino的文件~/.ctags.d/local.ctags
  2. 让标签栏知道如何在.vimrc中处理vim文件类型arduino(使用:set filetype?查询vim中的文件类型):
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中查找操作方法和此定义。~/.vim/bundle/tagbar/autoload/tagbar/types/uctags.vim 中给出了Javascript和其他定义

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

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

HTH

最新更新