You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Neovim中实现符合Rails规范的正确缩进?

解决Neovim中Rails DSL方法参数缩进不符合风格指南的问题

在Neovim v0.10.0(OS X 14.5)环境下,处理Rails代码时,redirect_to这类遵循风格指南不加括号的DSL方法,参数换行后的缩进总是无法对齐到方法名末尾,比如:

错误缩进:

redirect_to @foo,
        notice: I18n.t('template.model_created', model: Foo.new.model_name.human)

而Ruby/Rails风格指南要求的正确缩进应该是:

redirect_to @foo,
                  notice: I18n.t('template.model_created', model: Foo.new.model_name.human)

以下是无需编写自定义Lua脚本的解决办法:

  • 调整vim-ruby插件的缩进配置
    vim-ruby提供了专门控制参数对齐的配置项,在你的Neovim配置文件(init.vim或init.lua)中添加:

    let g:ruby_indent_align_parameter = 1
    

    开启这个选项后,多行参数会自动对齐到方法名的末尾,完全符合风格指南要求。注意确保vim-ruby是最新版本,旧版本可能没有该配置。

  • 用RuboCop自动修正缩进
    安装rubocop和rubocop-rails后,可以直接通过命令或Neovim快捷键触发自动修正:
    命令行执行:

    rubocop -a your_file.rb
    

    或者在Neovim配置中绑定快捷键快速处理当前文件:

    nnoremap <leader>ra :!rubocop -a %<CR>
    

    RuboCop会严格按照Ruby/Rails风格指南修正所有格式问题,包括缩进。

  • 开启TreeSitter的缩进增强
    确保已安装TreeSitter的Ruby parser,然后在init.lua中开启TreeSitter的缩进功能:

    require'nvim-treesitter.configs'.setup {
      indent = {
        enable = true,
        disable = {},
      }
    }
    

    最新版的TreeSitter Ruby parser对无括号DSL的缩进支持已经优化,开启后大概率能自动处理正确的对齐方式。

内容的提问来源于stack exchange,提问作者jpgeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 22:01:05