我该如何在Vim中缩进Ruby和Rails代码?

6

我想知道在Vim中是否有可能自动缩进Rails代码,而不是像这样:

validates :email, :presence => true,
  :format => { :with => email_regex },
  :uniqueness => { :case_sensitive => false }

转换为:

validates :email, :presence   => true,
                  :format     => { :with => email_regex },
                  :uniqueness => { :case_sensitive => false }
3个回答

8
这样做的最佳方式并非使用Vim内置的对齐方式,而是使用Dr.Chip的Align插件,该插件可用于将任意符号在垂直列中水平对齐。
例如,1,3Align =>将以=>为准进行对齐。使用AlignCtrl函数可极其详细地进行排序等操作,但其功能的范围可能会受到其文档的限制。:)

1
谢谢@sleepynate,我弄清楚了它可以使用以下命令工作::AlignCtrl Wlp0P1: :Align : :AlignCtrl Wlp1P1: :Align => - Jakob Lnr

1

感谢回答。

如果有人也需要这个,可以在 Tabular 中使用以下方法:

:Tabularize /^[^:]*\zs:/r1c0l0
:Tabularize /^[^=>]*\zs=>/l1

如果你想在 vimrc 中的一个函数中使用它:
function IndentV()
  Tabularize /^[^:]*\zs:/r1c0l0
  Tabularize /^[^=>]*\zs=>/l1
endfunction
map <Leader>iv :call IndentV()<cr>

所以你只需要在可视化模式下选择文本,然后按下\iv即可实现此操作。


0

我同时使用AlignTabular插件。

Align有一些不错的预先构建的对齐方式,而Tabular允许您设计一个正则表达式来匹配字段。这些天我发现自己更多地使用Tabular,但您可能会有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接