【问题标题】:How to get tagbar to work with js files如何让标签栏与 js 文件一起使用
【发布时间】:2012-03-23 19:14:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript vim plugins jsctags


    【解决方案1】:

    你试过taglist-plus吗?它使用 jsctags,并且在我安装这个插件的短暂时间内运行良好。

    【讨论】:

    • 我同时安装了 taglist-plus 和 tagbar。
    • taglist-plus 也是如此。我必须将 .js 文件重命名为 .html 否则它将无法识别任何标签。
    【解决方案2】:
    • 您正在处理的文件的文件类型 (:set ft?) 是什么?

    • 您是否安装了 ctags 和/或 jsctags 并正常工作?

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

      如果是,它包含什么?

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

    【讨论】:

    • 如果扩展名是 .js,文件类型是 javascript,如果扩展名是 .html,文件类型是 html。 ctags 和 jsctags 都已安装并正在工作。 ctags -R。完成时没有任何错误消息,但 jsctags 似乎挂起。如果我对 .js 文件执行 jsctags,它会显示“错误:没有找到构造函数的名称”。但如果在文件扩展名重命名为 html 的同一文件上运行它,则不会。我最近安装了 jsctags,所以它应该是最新的。
    • 您必须将您的问题一分为二,因为jsctagsctags 是完全不同的软件,并且要准确说明您在做什么。根据我的经验,jsctags 根本不适用于除了普通的 .js 文件之外的任何东西,无论是具有自定义扩展名的 JavaScript 文件还是嵌入了 JS 的 HTML 文件。但是,ctag` 在这两种情况下都有效。 jsctags 依赖于 nodejs,这是一个快速移动的垃圾。我以前在 jsctags 上遇到过麻烦,我通过安装另一个版本的 nodejs(0.7.2-pre)“解决了”这个问题。现在 jsctags 可以工作了,但它的输出发生了一些变化……
    • ……它把 TagBar 搞糊涂了。使整个事情几乎毫无用处。我刚看到几个月前修复了一个问题,我会看看它是否更好。同时,尝试升级 nodej。
    【解决方案3】:

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

    我必须意识到两件事:

    1. 让 ctags 处理新的文件扩展名(参见https://stackoverflow.com/a/67495267/10050838):对于ctags-universal,创建一个文件~/.ctags.d/local.ctags,其中包含--langmap=c++:+.ino
    2. 让标签栏知道如何处理.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多