在Vim中格式化Ruby代码

现在就转移到Vim。 在TextMate中,我可以通过按CmdAlt[来格式化代码。 我如何在Vim中实现同样的目标?


请参阅以下答案以获取该命令。 我发现我在.vimrc也需要以下内容,以便Vim知道如何自动提交Ruby。

 if has("autocmd") filetype indent on endif 

Vimcasts有一个关于这个主题的有用的截屏video ,你可能会感兴趣

 gg=G gg => go to start of file = => apply autoformatting G => ... to the end of file 

当我看到关于Vim和重新格式化和重新定位的问题时,我通常会感到困惑。 但这很容易。

使用=键完成的重新定位是一个在不插入任何线条末端的情况下改变线条偏移的过程 – 没有硬包装。 简单地说,所选行的开始列可以更改,但内容不能。

另一方面,重新格式化是完全重写所选代码。 简单地说,根据Vim中定义的语言规则删除所有内容并重新编写。 容易,对吧?

用于重新注册的常用模式是转到文件的开头( g g ),更改为行选择( V ),转到文件的末尾( G )并执行重新定位( = )。

这是在vim中缩进g g V G =

重新格式化模式以相同的键( g g V G )开始,但不是等于键,而是执行g q – 重新格式化Vim命令。

这是vim中格式g g V G g q

这在每个Vim实例中都是开箱即用的,即使是纯文本也是如此。 只有当Vim不理解编程语言时,才需要为它提供正确的格式化规则(通常是一堆必须转到.vim目录结构的.vim文件)。

只有安装了插件vim-ruby时,重新格式化Ruby才有效。

我不得不在我的博客上发布这个;-) Vim不是很酷吗? 它是。

尝试:

 gg=G 

在正常模式下。

如果您正在寻找的不只是缩进,请看看ruby-beautify 。 它可以通过vim-autoformat与vim集成。

ggVGgq将根据当前文件类型重新格式化整个文件

我发布了一个VIM插件,它将为Ruby文件做一些更全面的格式化。 除了缩进之外,它还可以删除尾随空格,并始终将方法声明空格化:

VIM-自动套用格式护栏

对于小缩进,请尝试: =}=)