Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 几种vim标签插件之间的差异_Python_Ruby_Vim_Ctags_Gnu Global - Fatal编程技术网

Python 几种vim标签插件之间的差异

Python 几种vim标签插件之间的差异,python,ruby,vim,ctags,gnu-global,Python,Ruby,Vim,Ctags,Gnu Global,实际上我有两个问题 首先,据我所知,有两种标记工具: Ctags GNU全球又名gtags 如果我的日常工作集中在Ruby、Rails、JavaScript和Python上,我想知道哪一个更合适。即,动态语言。 我在谷歌上搜索了一下,似乎gtags在某种程度上等同于ctags+cscope 其次,对于CTAG,有一些vim插件: :它可以通过命令:TagsGenerate在Vim中生成标记文件 :一个著名的插件。它似乎可以动态生成标签 :看起来像vim标签,但有更多功能 我在想 这些插件之间有重

实际上我有两个问题

首先,据我所知,有两种标记工具:

  • Ctags
  • GNU全球又名gtags
  • 如果我的日常工作集中在Ruby、Rails、JavaScript和Python上,我想知道哪一个更合适。即,动态语言。 我在谷歌上搜索了一下,似乎gtags在某种程度上等同于ctags+cscope

    其次,对于CTAG,有一些vim插件:

  • :它可以通过命令
    :TagsGenerate
    在Vim中生成标记文件
  • :一个著名的插件。它似乎可以动态生成标签
  • :看起来像vim标签,但有更多功能
  • 我在想

  • 这些插件之间有重叠吗
  • 如果存在重叠,如何集成它们或如何选择使用哪一个
  • 我知道在一篇SO文章中有两个问题是不好的,但我认为这两个问题是高度相关的,因为它们对于Vim+标记组合是必不可少的。 希望这个问题可以作为一个基础或教程的人想要使用标签,但不熟悉它就像我一样。(我找不到vim+CTAG的“现代”教程,互联网上的大多数帖子都过时了)

    谢谢

    更新:

    基本上,我希望能够

  • 跳转到特定函数的声明
  • 跳转到某个函数的用法
  • 使自动完成更智能。我是说,如果我有

    class Obj
      def m1
        puts "hello"
      end
    end
    
    然后,当我键入
    obj=obj.new时,我希望自动完成显示
    m1
    ;对象。
    。 据我所知,我可以使用ctags的文件,但我无法设置它,即使我遵循指示


  • 老实说,我真的不知道CTAG能做什么或能提供什么。因此,请随意建议更多有用的功能。谢谢

    您现在可以忘记GNU GLOBAL,因为——上次我检查时——它根本不支持JavaScript。我不了解Ruby和Python,但对您来说测试它应该不会太难

    Ctags与JavaScript(以及其他)一起工作,但它不喜欢“现代”的JavaScript编写方式(内联回调、滥用的文本对象、自调用函数……)。您可以通过向
    ~/.ctags
    文件中添加以下行来帮助它:

    --langmap=javascript:.js
    --regex-javascript=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/F,function,functions/
    --regex-javascript=/function[ \t]*([A-Za-z0-9._$()]+)[ \t]*\(/\1/F,function,functions/
    --regex-javascript=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object,objects/
    --regex-javascript=/^[ \t]*([A-Za-z0-9._$]+)[ \t]*[:][ \t]*[^\{]/\1/p,property,properties/
    --regex-javascript=/^[ \t]+var[ \t]*([A-Za-z0-9._$]+)[ \t]*=[ \t]*[\d"'\[]/\1/v,variable,variables/
    
    这些对我来说很有用,但我的JavaScript确实有点“老派”。注意,CTAG仅限于“定义/声明”

    CTAG还有一些特定于语言的变体,通常会给出更合理的结果,如或

    另一方面,Cscope可以“使用”并适用于您的所有语言。设置它比设置ctags广告要复杂一点,它的使用也有点复杂,但考虑到它的特性,这是非常合乎逻辑的

    cscope的一个“问题”是,与CTAG相比,围绕它编写的插件并不多。这是一个值得考虑的限制

    至于你列出的插件

  • 是的,1和3之间有重叠#2不生成或使用
    标记
    文件
  • 试试看,看看他们的医生,然后自己决定
  • 你甚至没有告诉我们你想如何使用这个功能?你在找什么<代码>标记生成?跳转到使用?跳转到声明?像“类资源管理器”这样的IDE?所有这些

    编辑

    让我谈谈您的评论和编辑:

  • CTAG和cscope都允许您“跳转到”任意符号的声明,或(通过自定义映射和cscope设置)光标下的符号

  • 只有cscope允许您“跳转到使用”

  • CTAG本身有点笨,而且您使用的是高度动态的语言,这使得CTAG在完成任务时有点无用。不过,有些语言比其他语言有更好的支持,因此您可能会发现一些有用的第三方插件,如或

  • 标记列表和标记栏不生成标记文件,但它们运行CTAG并使用其输出。他们只是不把它写入磁盘。所以,是的,您可以使用这些插件“跳转到delaration”,但它们仍然与Vim的内置ctags支持隔离,这可能会导致问题


  • 请参见
    :help ctags
    :help cscope
    ,了解他们可以做什么。

    谢谢提醒。我刚刚更新了所需的功能
    tagbar
    不生成或使用
    tags
    文件,所以它不能让我跳转到声明或类似的东西?Cscope在Ruby上本来就不太好用,但是我写了一个gem(),如果你想这样做的话,它可以做得更好。请参阅我的编辑。