在 Vim 中格式化 Ruby 代码

Posted

技术标签:

【中文标题】在 Vim 中格式化 Ruby 代码【英文标题】:Format Ruby code in Vim 【发布时间】:2011-04-16 16:25:11 【问题描述】:

目前只是转移到 Vim。在 TextMate 中,我可以通过点击 Cmd-Alt-[ 来格式化代码。我如何在 Vim 中实现同样的效果?


有关命令,请参阅下面的答案。我发现我的.vimrc 中还需要以下内容,以便 Vim 知道如何自动缩进 Ruby。

if has("autocmd")
  filetype indent on
endif

【问题讨论】:

【参考方案1】:

Vimcasts 有 a useful screencast 讨论您可能感兴趣的主题

gg=G

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

【讨论】:

我在一个 ruby​​ 文件中尝试了这个,它缩进了所有行,以便它们从左边开始 8 个字符。它完全忽略了原来的缩进。 查看原始问题中的编辑以了解我对格式问题的解决方案。 看了vimcast,值得一看 请区分重新格式化重新缩进。这是两个不同的东西。【参考方案2】:

当我看到有关 Vim 以及重新格式化和重新缩进的问题时,我通常会感到困惑。但这很容易。

使用 = 键完成的重新缩进是在不插入任何行尾的情况下移动行缩进的过程 - 没有硬换行。简单来说就是选中行的开头列可以改变,但是内容不能改变。

另一方面,重新格式化是对选定的一段代码进行完全重写。简单来说就是按照 Vim 中定义的语言规则,把所有的东西都删掉再写一遍。简单吧?

通常的重新缩进模式是转到文件的开头(gg),更改为行选择(V) ,转到文件末尾 (G) 并执行重新识别 (=)。

这是 vim 中的缩进ggVG =

重新格式化模式以完全相同的键(ggVG),但不是等键,而是执行 gq - 重新格式化 Vim 命令。

那是 vim 中的格式化ggVG gq

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

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

我不得不发布这个on my blog ;-) Vim 不是很酷吗?是的。

【讨论】:

【参考方案3】:

试试:

gg=G

在正常模式下。

【讨论】:

【参考方案4】:

如果您要寻找的不仅仅是缩进,请查看ruby-beautify。 可以通过vim-autoformat与vim集成。

【讨论】:

【参考方案5】:

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

【讨论】:

我猜 ggVG= 也会这样做。 我尝试了 ggVGqg 并且在重新格式化文档时它完全错误,例如第一个方法定义的第一行卡在类定义行的末尾。我根本无法理解这种格式。 查看原始问题中的编辑以了解我对格式问题的解决方案。【参考方案6】:

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

vim-autoformat-rails

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于在 Vim 中格式化 Ruby 代码的主要内容,如果未能解决你的问题,请参考以下文章

保存 .cpp 文件时在 vim 中自动格式化代码

vim代码格式化插件clang-format

vim 粘贴代码格式

开源组件如何用vim格式化代码

vim粘贴代码格式变乱

vim黏贴代码格式混乱的解决方法