在Vim中格式化错误的ruby代码

时间:2011-08-23 09:17:28

标签: ruby-on-rails ruby vim formatting

当我在vim中格式化PHP文件时没关系,但是当我格式化Ruby文件时,VIM格式代码不好。

例如:

class PostsController < ApplicationController

                skip_before_filter :authorize, :only => [ :index, :show ]

  def index
        @posts = Post.all
     end

  def show
    @post = Post.find(:first, :conditions => [ "id = ?", params[:id]], :include => [ :user, :category, :gallery ])
                  @photos = Photo.where(:gallery_id => @post.gallery.id).all
      end
   end

当我输入命令 gg = G 时,我得到了。

class PostsController < ApplicationController

skip_before_filter :authorize, :only => [ :index, :show ]

def index
@posts = Post.all
end

def show
@post = Post.find(:first, :conditions => [ "id = ?", params[:id]], :include => [ :user, :category, :gallery ])
@photos = Photo.where(:gallery_id => @post.gallery.id).all
end
end

请帮帮我。

3 个答案:

答案 0 :(得分:4)

要使Ruby缩进工作,您需要提供缩进配置。 Vim本身无法缩进Ruby代码,你可以将indentexpr变量设置为某种类似的语言(比如basic),但是你对结果不满意。检查你的smartindent和indentexpr变量:

:set si?
:set indentexpr?

在我的情况下,他们已经设定:

nosmartindent
indentexpr=GetRubyIndent()

为ruby配置vim的最佳方法是使用vim-ruby插件:https://github.com/vim-ruby/vim-ruby

答案 1 :(得分:0)

存在一个更通用的格式化插件,称为vim-autoformat。 除此之外,它集成rbeautify以提供更强大的格式,而不仅仅是修复缩进。

答案 2 :(得分:0)

我不确定我是否有任何Vim插件,因为我在工作中使用它(并且已经安装)。但是,对于它的价值,这里有一些.vimrc文件。

syntax enable             " Enable syntax highlighting
syntax on
set expandtab             " Use spaces instead of tabs
set shiftwidth=2          " 1 tab == 4 spaces
set tabstop=2             " 1 tab == 4 spaces

我实际上在文件中注释了set smartindent[1]

如果您想要用空格替换任何制表符(在上面的.vimrc中设置),我建议您在工作文件中使用以下命令:set :retab [2]