【发布时间】:2012-03-23 19:14:46
【问题描述】:
如果我打开一个扩展名为 .html 的文件,标签栏可以正常工作。
如果我打开一个扩展名为 .js 的文件,那么标签栏不会列出任何内容。只需将文件扩展名重命名为 .html 即可。
如何让标签栏与 .js 文件一起使用?
【问题讨论】:
标签: javascript vim plugins jsctags
如果我打开一个扩展名为 .html 的文件,标签栏可以正常工作。
如果我打开一个扩展名为 .js 的文件,那么标签栏不会列出任何内容。只需将文件扩展名重命名为 .html 即可。
如何让标签栏与 .js 文件一起使用?
【问题讨论】:
标签: javascript vim plugins jsctags
你试过taglist-plus吗?它使用 jsctags,并且在我安装这个插件的短暂时间内运行良好。
【讨论】:
您正在处理的文件的文件类型 (:set ft?) 是什么?
您是否安装了 ctags 和/或 jsctags 并正常工作?
在您放置 JavaScript 文件的位置执行 $ ctags -R . 和/或 $ jsctags . 是否会创建一个 tags 文件?
如果是,它包含什么?
如果您使用的是jsctags,它是最新的吗? nodejs 呢?
【讨论】:
jsctags 和ctags 是完全不同的软件,并且要准确说明您在做什么。根据我的经验,jsctags 根本不适用于除了普通的 .js 文件之外的任何东西,无论是具有自定义扩展名的 JavaScript 文件还是嵌入了 JS 的 HTML 文件。但是,ctag` 在这两种情况下都有效。 jsctags 依赖于 nodejs,这是一个快速移动的垃圾。我以前在 jsctags 上遇到过麻烦,我通过安装另一个版本的 nodejs(0.7.2-pre)“解决了”这个问题。现在 jsctags 可以工作了,但它的输出发生了一些变化……
在编辑 Tasmota 代码时在 *.ino 文件中使用 vim、tagbar 和 Arduino 源代码时遇到此问题。
我必须意识到两件事:
ctags-universal,创建一个文件~/.ctags.d/local.ctags,其中包含--langmap=c++:+.ino。.vimrc中的vim文件类型arduino(在vim中使用:set filetype?查询文件类型):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
【讨论】: