如果我打开一个扩展名为.html的文件,tagbar就可以正常工作。
如果我打开一个扩展名为.js的文件,那么标签栏不会列出任何内容。只要将文件扩展名重命名为.html就可以了。
如何让标签栏与.js文件一起使用?
您尝试过taglist plus吗?它使用jsctags,在我安装这个插件的短暂时间里,它运行得很好。
-
您正在处理的文件的文件类型(
:set ft?
)是什么? -
您是否已安装和工作
ctags
和/或jsctags
?从放置JavaScript文件的位置执行的
$ ctags -R .
和/或$ jsctags .
是否会创建tags
文件?如果是,它包含什么?
-
如果您使用的是
jsctags
,它是最新的吗?nodejs呢?
在编辑Tasmota
代码时,在*.ino文件中使用vim
、tagbar
和Arduino
源代码时遇到此问题。
我必须意识到两件事:
- 使ctags处理新的文件扩展名(请参阅https://stackoverflow.com/a/67495267/10050838):对于
ctags-universal
,创建一个包含--langmap=c++:+.ino
的文件~/.ctags.d/local.ctags
- 让标签栏知道如何在
.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