Ruby 用 Ruby 比较不好的一点就是没有一个满意的编辑器

Abson · 2023年02月03日 · 最后由 Abson 回复于 2023年02月15日 · 2869 次阅读

本人一直习惯用 VSCode,其他语言在 VSCode 上都支持很好,唯独这门语言,连搞个跳转费劲,用 solargraph 跳到 gem 里面,gem 工程又不能跳转,我真的....

推荐使用 rubymine

试试 Rubymine,主要是我个人习惯了 JetBrains 的产品

@lehf @2604249649 主要是 JetBrains 的产品太占内存了,习惯了用 VSCode,因为还要写 C++、Python、TS、JS、Dart 等语言,用 VSCode 比较顺手。而且最重要一点,Rubymine 要收费。

去 solargraph 提 issue,也许那天就解决了

vscode 在 ruby 上的确会比较头疼,插件都不知道怎么选,有几个感觉都不成熟,哪怕是 shopee 他们做的那些,说明都搞不清楚。

sublimetext 对 ruby 的支持要好一些,反正我觉得习惯很多,不过现在已经慢慢淡出 sublime 了

lyfi2003 回复

求 ruby 相关的 vim 插件,我用 nvim-lspconfig 那一套,include 模块没办法跳转,gem 相关的 api 提示也不完整,之前从 coc 转过来的,coc 倒是可以跳 include 的,但 gem 的提示好像都有点难受

bill997603 回复

vim 的话,除了 lsp 的 solargraph 外,主要就是 tpope 大神的 ruby 全局桶,包括自动生成 tag,设置 path,关联文件跳转等等

316786359 回复

之前看了下 vim-rails 感觉没提到可以提示 gem 里面的 api,我配置了下 elixir-ls,这东西就可以提示 elixir 项目当前引入的依赖

rubymine 神器😉

bill997603 回复

api 靠生成 tags,有一个 gem-ctags 的插件可以在安装 gem 时自动生成。然后 vim-ruby 应该会改 path 和 tags 配置,这样就有基于 tags 的补全和跳转了

solargraph 起码能用😀

Abson 回复

确实是比较吃内存,我 16G 内存,开 rubymine 有时候经常会把内存用满,特别是同时开了 docker,微信开发者工具的时候。但是它的索引确实是比较方便,当你用了 rbenv 或者 rvm 管理本地 ruby versions 的时候,它也可以根据项目里的 ruby 版本顺利跳到 gem 里。买了好多年的 rubymine,总体感觉节约的时间还是值得的。目前我写前端还是用 vscode,同时用两个 IDE 切来切去倒不麻烦,就是快捷键有的时候会混,要完全调成一样的也挺麻烦。

316786359 回复

早提了,作者说是已存在的问题,需要时间修复,我看更新进度实在慢。最近 shopify 也出了一个 lsp 服务,叫 https://github.com/Shopify/ruby-lsp,感觉这个如果做起来,会比 solargraph 好多了。

pzgz 回复

嗯,如果单单写 ruby 我就用 rubymine 或 sublinetext 了,可惜我要写多种语言,只想习惯使用一个编辑器。

adamshen 回复

这就是 ruby 小白们的悲哀,用了这东西,发现连个提示都搞不好,直接就不学了,看看别人 Python 和 JavaScript,vscode 支持得多好...

adamshen 回复

rubymine 电脑时不时就卡死,又没预算换 m 系列的 macbook,而且之后需要转到 elixir,目前试了 vscode 试了 vim,vim 开发 elixir 目前体验是最好的

bill997603 回复

vim 不是说不好,只是太过与折腾了,为了一个写代码的工具这么折腾,没必要,不过 vim 的快捷方式挺好,我在 vscode 上也用 vim 插件,但是直接用 vim 开发,还是算了,配置都搞 N 久,而这些功能,一个 vscode 插件就搞掂了

反正我只想说,做了好几年开发,到现在就只遇到过一个买过正版的 Jetbrain 系列的同事。

用 Rubymine 的,在用正版的话给我点个赞呢😝 我就看看有多少

Catherine 回复

嫖的学生版算正版吗😌

23 楼 已删除
bill997603 回复
Plug 'tpope/vim-rails'
Plug 'tpope/vim-bundler'
Plug 'ludovicchabant/vim-gutentags'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } |
     \ Plug 'junegunn/fzf.vim'

我主要用这些,solargraph 对 ruby 只能说聊胜于无,靠 tag 和 fzf 搜索其实完全够用了,ruby 太灵活了,rubymine 的跳转也并不是那么靠谱。更多的 ruby/rails 相关设置可以看下 我仓库 config/plugin 目录下对应插件的配置

tag 相关还需要安装这些

brew install --HEAD universal-ctags/universal-ctags/universal-ctags
gem install gem-ctags ripper-tags

他爹又要来叨叨两句了

用 ruby 就应该忘记自动补全、跳转到定义这些幺蛾子,ruby 里的那些内置方法 to_i, to_s 命名如此简短,就是为了方便记忆方便输入,ruby 这么灵活的语言根本就做不好智能补全,ai 加持也白搭,用 ai 那种只能准确到 90% 左右的补全,噪音信息仍会让人疲倦烦躁。

想用补全就用JAVA、C#这种静态类型语言,从生态的建立之初就是以静态语言的特性建立起来的。比如JAVA里又长又易读的命名,100%准确的智能提示

VS Code 加一些插件,现在已经做得比之前好很多了。动态语言很多动态方法解析不出来。

jiz4oh 回复

兄弟,搞这么麻烦,我已经下班了...

gaicitadie 回复

一门语言应该考虑新手友好,如果是局限于“如果觉得不好就用别的”这个句子上,是不是太故步自封了?

30 楼 已删除
31 楼 已删除
32 楼 已删除
huacnlee 回复

也不可以这么说,JS 也是动态语言,支持比 Ruby 好很多,跳转什么的都很正常。唉

类型系统是编辑器支持的基石,ruby 在这方面欠缺的太多了。

Catherine 回复

每年都续,有图有证据。不是道德绑架哈,程序员条件允许还是尽量用正版,其他程序也是其他程序猿写的啊。程序员帮助程序员!

bill997603 回复

主要是内存,建议上至少 32G。不光是为了 IDE,跑 docker 什么的都需要,你值得拥有。

adamshen 回复

害,有条件我真的想买 32 G 的 macbook pro,这不小白资金吃紧吗😭 ,我一般负责两个 rails 项目,跑一个 rubymine,再跑一个 chrome,内存就没了,其实 chrome 也很吃内存

Abson 回复

其实还好,虽然谈不上开箱即用,但维护一个自己的 dotfiles,换一个机器执行一个脚本就能装上所有依赖

bill997603 回复

一直都是远程使用 Emacs 和 vi 开发,好处就是对电脑要就不高。

zhongsheng 回复

就在刚才,我用 vim debug,半天都找不到原因,然后我打开了 rubymine,找到了原因😭

可以考虑使用 neovim,更加现代化的 vim,mason.nvim 插件可以为 neovim 提供管理 LSP 能力,当然它还有许多插件,如 packer.nvim 用于控制所有插件更新包括它自己。虽然 vim 也可以装许多插件,但是我个人在 mac 上用了一段时间的 neovim 后觉得比 vim 好使。如果你觉得 neovim 配置插件麻烦的话,也可以直接使用 Lunarvim、nvchad 或者类似的工具,达到类似一个 IDE 的效果。(不过我从没用 neovim 调试过代码,不知道怎么样,或许你可以试试)

RubyMine 家的授权比较特殊,个人版可以在公司用,公司版又贵很多,公司又不能私下给我点钱买个人版。 最后公司给我买的公司版,贵是贵了点,但都合规。

用了 RubyMine 就不想换了,Debug 下断点太方便了,包括 RSpec 也能下断点,再也不用 binding.pry 了。

好像 VS Code 也能下断点,没空研究,但猜测应该不如 RubyMine,希望我错了。

跳转也很方便,当然遇到个 小明 小红 小帅 的方法名,那就要在一堆列表里找了。

2604249649 回复

neovim 不麻烦,就是 item2 使用 neovim 非常卡!,已经抛弃纯 vim 好久了,只是在 vscode 和其他编辑器上开启 vim 插件使用。不折腾。

Peter 回复

vsocde 下断点很舒服呀,使用“VSCode Ruby rdbg Debugger”,就是使用 solargraph 的跳转功能差了点意思,等到 shopify 的 ruby-lsp 完成,应该体验就会好很多,貌似他们在 RubyConf 2022 中也提出方案了,https://www.youtube.com/watch?v=kEfXPTm1aCI

Catherine 回复

我们公司好几个

动态类型语言是这样的,很难做到完善的自动跳转、自动补全

bill997603 回复

握手 编辑器大法好!

zzz6519003 回复

vscode 也是个编辑器

需要 登录 后方可回复, 如果你还没有账号请 注册新账号