本人一直习惯用 VSCode,其他语言在 VSCode 上都支持很好,唯独这门语言,连搞个跳转费劲,用 solargraph 跳到 gem 里面,gem 工程又不能跳转,我真的....
@lehf @2604249649 主要是 JetBrains 的产品太占内存了,习惯了用 VSCode,因为还要写 C++、Python、TS、JS、Dart 等语言,用 VSCode 比较顺手。而且最重要一点,Rubymine 要收费。
vscode 在 ruby 上的确会比较头疼,插件都不知道怎么选,有几个感觉都不成熟,哪怕是 shopee 他们做的那些,说明都搞不清楚。
sublimetext 对 ruby 的支持要好一些,反正我觉得习惯很多,不过现在已经慢慢淡出 sublime 了
求 ruby 相关的 vim 插件,我用 nvim-lspconfig 那一套,include 模块没办法跳转,gem 相关的 api 提示也不完整,之前从 coc 转过来的,coc 倒是可以跳 include 的,但 gem 的提示好像都有点难受
vim 的话,除了 lsp 的 solargraph 外,主要就是 tpope 大神的 ruby 全局桶,包括自动生成 tag,设置 path,关联文件跳转等等
之前看了下 vim-rails 感觉没提到可以提示 gem 里面的 api,我配置了下 elixir-ls,这东西就可以提示 elixir 项目当前引入的依赖
api 靠生成 tags,有一个 gem-ctags 的插件可以在安装 gem 时自动生成。然后 vim-ruby 应该会改 path 和 tags 配置,这样就有基于 tags 的补全和跳转了
确实是比较吃内存,我 16G 内存,开 rubymine 有时候经常会把内存用满,特别是同时开了 docker,微信开发者工具的时候。但是它的索引确实是比较方便,当你用了 rbenv 或者 rvm 管理本地 ruby versions 的时候,它也可以根据项目里的 ruby 版本顺利跳到 gem 里。买了好多年的 rubymine,总体感觉节约的时间还是值得的。目前我写前端还是用 vscode,同时用两个 IDE 切来切去倒不麻烦,就是快捷键有的时候会混,要完全调成一样的也挺麻烦。
早提了,作者说是已存在的问题,需要时间修复,我看更新进度实在慢。最近 shopify 也出了一个 lsp 服务,叫 https://github.com/Shopify/ruby-lsp,感觉这个如果做起来,会比 solargraph 好多了。
这就是 ruby 小白们的悲哀,用了这东西,发现连个提示都搞不好,直接就不学了,看看别人 Python 和 JavaScript,vscode 支持得多好...
rubymine 电脑时不时就卡死,又没预算换 m 系列的 macbook,而且之后需要转到 elixir,目前试了 vscode 试了 vim,vim 开发 elixir 目前体验是最好的
vim 不是说不好,只是太过与折腾了,为了一个写代码的工具这么折腾,没必要,不过 vim 的快捷方式挺好,我在 vscode 上也用 vim 插件,但是直接用 vim 开发,还是算了,配置都搞 N 久,而这些功能,一个 vscode 插件就搞掂了
反正我只想说,做了好几年开发,到现在就只遇到过一个买过正版的 Jetbrain 系列的同事。
用 Rubymine 的,在用正版的话给我点个赞呢 我就看看有多少
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%准确的智能提示
害,有条件我真的想买 32 G 的 macbook pro,这不小白资金吃紧吗 ,我一般负责两个 rails 项目,跑一个 rubymine,再跑一个 chrome,内存就没了,其实 chrome 也很吃内存
可以考虑使用 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,希望我错了。
跳转也很方便,当然遇到个 小明 小红 小帅 的方法名,那就要在一堆列表里找了。
neovim 不麻烦,就是 item2 使用 neovim 非常卡!,已经抛弃纯 vim 好久了,只是在 vscode 和其他编辑器上开启 vim 插件使用。不折腾。
vsocde 下断点很舒服呀,使用“VSCode Ruby rdbg Debugger”,就是使用 solargraph 的跳转功能差了点意思,等到 shopify 的 ruby-lsp 完成,应该体验就会好很多,貌似他们在 RubyConf 2022 中也提出方案了,https://www.youtube.com/watch?v=kEfXPTm1aCI