如何在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
相关产品推荐
相关产品推荐

