【问题标题】:TextMate's Jump to Function in VIM?TextMate 在 VIM 中的跳转功能?
【发布时间】:2010-12-09 18:05:27
【问题描述】:

最近我一直在尝试使用 vim 代替 TextMate,而我在 VIM 中最怀念的功能之一是 TextMate 的跳转到方法函数(不知道的人可以使用 CMD + Shift + T) .环顾四周,我没有看到任何模拟此功能的特定方法,并且想知道这里是否有人在 VIM 中使用过此类功能。

提前感谢您的任何回答

帕特里克

【问题讨论】:

  • 这个请求的功能的一些细节可能会对我们有所帮助......
  • 不知道,但 +1 和金星,因为我一直在学习 Vim 技巧。
  • 基本上,当您执行此快捷方式时,textmate 会为您提供一个窗格,其中列出了您当前打开的文件中的所有功能。这是它的截图tinyurl.com/yjkh5j7顶部的搜索框提供了一个减少搜索,但这不是一个重要的功能
  • 我们需要类似 FuzzyFinder 的 :FufTag 但只针对当前缓冲区。我一直在寻找同样的东西,但找不到任何东西:(
  • 很想拥有这样的东西。 TagList 尽可能接近,但它仍然缺乏对 CSS 的支持(不是 TagList 本身的错,而是 Exuberant Ctags 的错)。我很想拥有与 CommandT 插件一样好用的东西,但仅适用于符号。如果我有时间和知识,我想我可以做到,但 VimScript 是我的盲点之一。

标签: vim textmate


【解决方案1】:

我很想听听好的建议,因为我一直在使用 Vim,但没有使用过 TextMate。我做了以下略有重叠的事情。

  1. 搜索 d-e-f-space-。因此,要转到函数 foo(在 Python 或 Ruby 中,当然在同一个文件中),我输入 /def fo 就可以了。我还在 Vim 中启用了增量搜索。

  2. 对我经常访问的函数使用标记。所以我将在函数定义处ma,然后在稍后返回'a。我知道这不是函数定义,而是拐杖。

【讨论】:

  • 不知道 vim 的标记功能。在 vim 中不断发现可以真正加快您的工作流程的新事物真是太好了
【解决方案2】:

您正在寻找 vim 的“标签”功能......我在这里回答了一个关于标签的类似问题:How to implement own tag jump in VIM with CTRL-]?

【讨论】:

    【解决方案3】:

    您可以使用 ctags http://ctags.sourceforge.net/ 创建标签文件 基本上 $ctags -R 然后一旦你进入 vim :set tags=/path/to/tagsfile

    这也可以是任何标签,不仅仅是类名、方法等。在正常模式下,方法/类/上的 ctrl-] 它将跳转到该位置。

    您还可以使用 taglist 插件,该插件将在侧窗口中显示当前标签。 ctags

    【讨论】:

      【解决方案4】:

      我遇到了几乎相同的问题,但我找到了一个快速而肮脏的解决方案(将其粘贴到您的 .vimrc 中并通过键入 :LS 进行调用)

      function! s:ListFunctions()
      vimgrep /function/j %
      copen
      endfunction
      command! -bar -narg=0 LS call s:ListFunctions()
      

      如果您需要更多功能,那么 Exuberant Ctags 会更适合您

      【讨论】:

      • 感谢它对我想要完成的工作非常有效。
      【解决方案5】:

      我使用 CommandT 搜索文件,然后使用 / 搜索特定功能。然而,真正的问题在于 CSS。 Textmate 中的 Cmd Shift T 可以快速跳转到特定的 CSS 类,这样可以节省大量时间。

      CTags 不支持 CSS 解析,除非您使用补丁(通过 google 找到)重新编译,但我什至不确定我们是否可以像 Textmate 中那样对 CSS 类进行模糊搜索。我真的很怀念 Cmd Shift T 功能。

      【讨论】:

        【解决方案6】:

        此功能已在模糊查找器中使用 :FufBufferTag 实现。 See the ticket

        【讨论】:

          【解决方案7】:

          我编写了一个 TextMate Bundle 命令(例如,您可以轻松地将其分配给 Ctrl+])查找插入符号下的类或方法的定义并将其显示在工具提示中,以及文件名和找到它的行。

          查看:Add a shortcut to TextMate to lookup a class or method definition in a tooltip
          希望对您有用!

          【讨论】:

            【解决方案8】:

            这个问题中描述的特性有很多不同的名称,具体取决于 IDE/Editor:

            • 在 Resharper 中称为“转到文件成员”
            • 在 Sublime Text 2 中,它被称为“Goto Symbol”
            • 在 PyCharm 中称为“Goto Symbol”

            尽管在上述所有实现中,该功能本质上是相同的(我认为它在 TextMate 中也非常相似)。该功能会显示一个交互式方法/函数列表(可能还包括成员变量/属性)。

            该列表允许通过键入方法/函数/等的名称进行交互式过滤。该列表通常还允许使用箭头键来选择方法/功能/等。使用选定的方法/函数/等按 Enter 键会导航到当前文件中定义选定方法/函数/等的行。

            在这个问题的所有现有答案中,我看到的唯一一个似乎提供了此功能相当相似的实现的答案是使用以下命令:

            :FufBufferTag 
            

            在 vim 的 FuzzyFinder 插件中。

            建议使用 taglist 插件的答案不是一个好的解决方案,因为 taglist 插件提供的功能与功能完全不同。 taglist 插件提供了类似的功能——能够查看当前文件中的方法大纲,但它不提供实时过滤该列表的交互式方式。 taglist 插件确实允许您搜索标签缓冲区,但这并不像其他编辑器中提供的“转到符号”功能那么方便。

            我想在这里提供一个替代建议,就是使用命令:

            :CtrlPBufTag 
            

            在优秀的Ctrlp vim 插件中。在我看来,这是目前 vim 中“Goto Symbol”功能的最佳实现。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-01-23
              • 2020-10-15
              • 1970-01-01
              • 2010-10-17
              • 1970-01-01
              • 2023-02-11
              • 2011-01-22
              相关资源
              最近更新 更多