当前位置:  开发笔记 > 编程语言 > 正文

如何在VIM中导航Ruby方法?

如何解决《如何在VIM中导航Ruby方法?》经验,为你挑选了4个好方法。

我正在学习VIM for Rails开发,并希望轻松导航文件中的方法.到目前为止,我看到几个选项:

通过使用找到'def'

/def

使用q和记录创建与键对应的宏

使用VIM标志?(甚至不确定他们做了什么,他们听起来很有希望

有没有更好的想法?



1> eremite..:

:帮助] m

我认为它需要vim-ruby来支持红宝石.



2> chillitom..:

你会想要一个名为ctags的功能

看到充满活力的ctags,它适用于包含Ruby的许多语言,并且易于使用.

来自VIM :help ctags

ctags将创建源树中所有标识符的索引.然后,您可以使用标记命令在源树周围导航.看:help tag-commands.最简单的方法是将光标放在关键字上,然后按CTRL- ].要回到你来自哪里,请按CTRL-T

除此之外,您可能希望查看此页面,其中介绍了如何将VIM用作功能更全面的Ruby IDE:将Vim用作完整的Ruby On Rails IDE


是的,有一个惊人的,Ruby 1.9+只有https://github.com/tmm1/ripper-tags - 有一个拉取请求,可以改善CLI.但是大师今天工作正常.
大警告:Ctags没有正确解析Ruby文件.例如,它不接受带有四个点的类定义(例如,类Xyz :: Classname)和其他几个东西.不幸的是,最新版本是从2009年开始甚至开发版本都不支持.

3> lzap..:

Vim的最佳解决方案:使用ctags.阅读有关如何在TAGS文件中导航的Vim文档,还安装CtrlP之类的插件,可以直观地浏览标签.

警告:繁琐的ctags与Ruby不兼容,解析器状况不佳,4年后它还没有改变.

ctags不处理:模块A :: B

ctags不标记(至少某些)运算符方法,如==

ctags不支持限定标签,-type = +

ctags不输出常量或属性的标记.

不幸的是所有其他(我发现2)Ruby ctags生成器要么已过时(没有Ruby 1.9+支持),要么非常慢.

有一个解决方案.Ripper-ctags:https://github.com/tmm1/ripper-tags它很快,它按预期工作.它基于Ruby 1.9+功能,称为"Ripper",它允许我们构建在(快速)Ruby原始解析器之上.它是当今最准确的ctags发生器.

Ripper CLI选项几乎与ctags相同,因此如果您已经知道ctags,您会发现ripper-tags易于学习.它很简单:

ripper-tags -R .

这会创建TAGS文件,vim默认自动读取(必须是打开vim实例的目录,或者如果你在另一个目录中启动它,请在vim中手动更改路径设置 - 更多在Vim手册中).

如果你喜欢这个,你可以更进一步安装我的项目,为你安装的所有宝石自动创建TAGS:https://github.com/lzap/gem-ripper-tags

用法很简单(再次注意,只有Ruby 1.9+):

gem install gem-ripper-tags

然后为所有已安装的宝石生成标签:

gem ripper_tags

无论何时安装gem,都会自动创建标签.

gem instal some_gem ...

我再往前走一步 - 我有一个git模板,它会在每次git pull或者自动合并后使用ripper-tags 重新生成我的项目TAGS :

https://github.com/lzap/bin-public/blob/master/git-hooks-reinstall

请注意,您将需要来自同一个git存储库的目录文件/ git_template.

我希望这是在Ruby代码库中导航的良好起点:-)



4> DrAl..:

一些想法:

首先,进行映射以使用C函数搜索键~/.vim/after/ftplugin/ruby.vim:

:nmap [[ ?def 
:nmap ]] /def 

然后你可以使用[[]]前进和后退一个函数,就像在C/Perl/Java代码中一样.

另一种可能有用的方法:

.vimrc,添加行:

:let ruby_fold = 1

然后使用zj,zk,z[z]由褶皱导航.您也可以安装此插件,以便您可以使用轻松删除折叠daz.

为了找到特定的功能(而不仅仅是在它们周围导航),你需要使用ctags(如chillitom所述).该标记列表插件使得它更容易定位到特定的功能,但(作为chillitom说)Ctrl- ]Ctrl- T是光标下以下关键字有用.

有关更多信息,请参阅:

:help [[
:help ft-ruby-syntax
:help z[
:help after-directory

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有