4

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

提前感谢您的任何答案

帕特里克

4

8 回答 8

4

您正在寻找 vim 的“标签”功能......我在这里回答了一个关于标签的类似问题:如何使用 CTRL-] 在 VIM 中实现自己的标签跳转?

于 2009-10-24T17:05:40.330 回答
2

此功能已在模糊查找器中使用 :FufBufferTag 实现。看票

于 2011-02-18T15:54:15.957 回答
0

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

  1. 搜索 def-space-<函数名的前几个字母>。因此,要转到函数 foo(在 Python 或 Ruby 中,当然在同一个文件中),我输入/def fo并在那里。我还在 Vim 中启用了增量搜索。

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

于 2009-10-24T16:05:23.467 回答
0

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

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

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

于 2009-10-24T22:46:08.617 回答
0

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

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

如果您需要更多功能,那么 Exuberant Ctags 会为您做得更好

于 2009-10-25T13:38:43.910 回答
0

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

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

于 2010-08-05T18:16:01.547 回答
0

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

检查一下:在 TextMate 中添加快捷方式以在工具提示中查找类或方法定义
希望您会发现它很有用!

于 2011-10-08T21:42:56.927 回答
0

此问题中描述的功能有许多不同的名称,具体取决于 IDE/编辑器:

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

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

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

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

:FufBufferTag 

在 vim 的FuzzyFinder插件中。

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

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

:CtrlPBufTag 

in the excellent Ctrlp vim plugin. In my opinion this by far the best implementation of the "Goto Symbol" feature currently available in vim.

于 2012-11-15T21:03:44.000 回答