有关如何查阅 Ruby 源码,到目前为止,一直不得其法。
因为 Emacs 可以非常方便的根据光标位置的文本内容以及上下文,自动打开所需的库。觉得太方便了,有关 Ruby, 我使用 etags 自己创建了正则表达式,主要是跟踪合法的 def 定义,class 定义,module 定义,并创建一个 TAGS, 到底我跟踪的对不对?自己也不清楚,
我现在就是想知道,使用别的编辑器或者集成 IDE 的朋友,你们如何方便的查看 Ruby 自带的库源码呢?有没有什么好的经验分享下。
我刚刚发现,铜鼓 etags 创建了 TAGS 之后,通过 ido 可以直接在 require 'abc'之上打开 abc 对应的 Ruby 库文件了。晕死,之前咋就没发现呢。只要在设法修改下代码,应该也可以实现 require 'abc/def'之类的。
没听懂,目前我发现的应用就是:查找类,模块,方法定义,还有就是方便在 require 那里,打开直接打开对应的库文件。(因为在 TAGS 中有完整的库文件路径), 不过你指的代码补全是什么意思?
晕,咱俩原来说的不是一个东西,我说的补全是关键字补全,就是输入一部分,会自动提示剩余的部分,如果你觉得是你想要的,就按下 tab, 如果不是,你可以继续输入,缩小范围或者通过快键,弹出 auto-complete 菜单选择所需的单词。
你说的补全,我个人也不知道该咋称呼,我反正就叫 snippet, 或者说代码扩展。 我同意你的建议,我的 snippet 的名字往往会搞得很完整,不用简写,就是怕自己忘记是啥东西,另外,编写 snippet 的时候有 name 名称,就是让你写注释的。如果存在同一个 key 但是不同 name, 会弹出一个菜单供选择。
我还是太不了解 Vim 了。我怀疑你是不是在同一个文件内的不同 section 内设定不同的补全。无论怎么说,补全的确牛啊。而且肯定是自己写的补全最有感觉。哈哈
@zw963 ruchee 用了 Rubymine 后我才知道啥叫高效且不折腾了。 看源码超级爽
PS:编码还喜欢 VIM,一个字:非常的快!XD
嗨~ 我这人其实要求不高,虽然我知道 Rubymine 的代码映射或者或上下文智能提示应该很优秀,不过使用 etags 我现在足够了。目前可以方便的跟踪标准库中的所有方法定义,类定义,模块定义,还有别名定义,另外也可以方便的打开 require 'mathn'(只要光标在 mathn 上) 对应的库文件。有这些就足够啦。智能化肯定是没办法跟 Rubymine 比啦,不过有时候都动动脑,记一些东西也不是什么坏事儿。太智能化的提示,会让你产生严重的依赖性,例如你输入某个对象,再输入一个 dot, 就会弹出备选方法来。类似这样的功能, 刚开始我还觉得挺有必要的。不过越来越熟悉之后,反而觉得有些多余了。自己敲之也不错的,而且通过词典也可以自动补全嘛,只不过自己多敲几个字符,给编辑器一点提示而已。
另外,针对 TAGS, 而且如果我需要查看 Ruby 的 C 源码实现的话 (汗,C 早就忘光了), 我还可以把 Ruby C 源码中的方法以及函数和标准库的 Ruby 源码全部放到一个 TAGS 文件里面,这个使用自定义的 TAGS 轻而易举,这点如果 Rubymine 做死的话 (不支持 TAGS), 灵活度就差一些了。
#15 楼 @zw963 用 pry 的的 show-method 就行了,c 源码也能看一些
$ pry -r ./config/environment
[1] pry(main)> show-method Array#each
From: array.c in Ruby Core (C Method):
Number of lines: 11
Owner: Array
Visibility: public
VALUE
rb_ary_each(VALUE ary)
{
long i;
RETURN_ENUMERATOR(ary, 0, 0);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_PTR(ary)[i]);
}
return ary;
}