如何使用Vim跳转到函数定义?例如,在Visual Assist中,我可以在函数下输入Alt+g,它会打开一个上下文菜单,列出带有定义的文件。
如何在vim中做这样的事情?
如何使用Vim跳转到函数定义?例如,在Visual Assist中,我可以在函数下输入Alt+g,它会打开一个上下文菜单,列出带有定义的文件。
如何在vim中做这样的事情?
当前回答
1-安装旺盛的标签。如果你正在使用osx,这篇文章展示了一个小技巧: http://www.runtime-era.com/2012/05/exuberant-ctags-in-osx-107.html
2-如果你只想在你的目录中包含文件的ctags,在你的目录中运行这个命令:
ctags -R
这将为您创建一个“标签”文件。
3-如果你正在使用Ruby,并且希望为你的宝石包含ctags(这对我使用RubyMotion和我开发的本地宝石非常有帮助),请执行以下操作:
ctags --exclude=.git --exclude='*.log' -R * `bundle show --paths`
来源:https://coderwall.com/p/lv1qww (注意,我省略了为emacs而不是vim生成标记的-e选项)
4-在~/.vimrc中添加以下行
set autochdir
set tags+=./tags;
(为什么是分号:http://vim.wikia.com/wiki/Single_tags_file_for_a_source_tree)
5-找到你想要跟随的单词并按ctrl +];如果你想返回,使用ctrl+o(来源:https://stackoverflow.com/a/53929/226255)
其他回答
保罗的第二个回答是:是的,ctags(尤其是exuberant-ctags (http://ctags.sourceforge.net/))很棒。我还添加了这个到我的vimrc,所以我可以为整个项目使用一个标签文件:
set tags=tags;/
1-安装旺盛的标签。如果你正在使用osx,这篇文章展示了一个小技巧: http://www.runtime-era.com/2012/05/exuberant-ctags-in-osx-107.html
2-如果你只想在你的目录中包含文件的ctags,在你的目录中运行这个命令:
ctags -R
这将为您创建一个“标签”文件。
3-如果你正在使用Ruby,并且希望为你的宝石包含ctags(这对我使用RubyMotion和我开发的本地宝石非常有帮助),请执行以下操作:
ctags --exclude=.git --exclude='*.log' -R * `bundle show --paths`
来源:https://coderwall.com/p/lv1qww (注意,我省略了为emacs而不是vim生成标记的-e选项)
4-在~/.vimrc中添加以下行
set autochdir
set tags+=./tags;
(为什么是分号:http://vim.wikia.com/wiki/Single_tags_file_for_a_source_tree)
5-找到你想要跟随的单词并按ctrl +];如果你想返回,使用ctrl+o(来源:https://stackoverflow.com/a/53929/226255)
将光标放在程序中的任何变量上时使用gd或gd。
动力局会带你去当地报关。 gD将带您到全局声明。
更多的导航选项可以在这里找到。
使用cscope交叉引用大型项目,例如linux内核。
G *在没有设置标签的情况下做得不错。
也就是说,输入g,*(或者只输入* -请参见下文)来搜索光标下的单词(在本例中是函数名)。然后按n转到下一个(或Shift-n为前一个)事件。
它不会直接跳转到定义,因为这个命令只是在光标下搜索单词,但是如果您现在不想处理设置ctags的问题,那么至少可以避免重新键入函数名来搜索它的定义。
——编辑 虽然我已经使用g*很长时间了,但我最近发现了这些快捷键的两个快捷键!
(a) *将跳转到光标下出现单词的下一个位置。(不需要输入g,在vi中输入'goto'命令)。
(b) #以类似的方式指向前一个事件。
N和N仍然可以工作,但是'#'通常非常有用,可以从相反的方向开始搜索,例如,在游标下查找变量的声明。
使用ctags。生成一个标记文件,并使用:tags命令告诉vim它的位置。然后使用Ctrl-]跳转到函数定义
在这个问题中有更多的标签技巧和提示。