Vim ruby​​身份

时间:2017-10-20 14:22:13

标签: ruby vim

我正在学习Vim,需要做以下事情: 假设我键入了这个:

class MyClass
private
end

输入gg=G后,我希望private保持在类声明的级别,如下所示:

class MyClass
private
end

但它看起来不对(缩进向右移动private):

class MyClass
  private
end

如何添加自定义私有自定义规则?

2 个答案:

答案 0 :(得分:2)

正如已经提到的评论,vim使用建议的缩进: https://github.com/bbatsov/ruby-style-guide#indent-public-private-protected

但是,如果您想要更改它,可以设置自定义indentexpr

autocmd FileType ruby setlocal indentexpr=YourCustomFunction()

然而,编写这样的功能将会有很多工作。最好使用你的vim已经使用的理智功能,并将其保留给官方推荐。

P.S。 Rubocop没有反对它,你得到的错误可能是指一个无用的private语句,因为之后没有任何函数。

答案 1 :(得分:1)

如果您希望将访问修饰符保持在类声明的级别,您可以通过将其置于.vimrc中来让Vim尊重它:

let g:ruby_indent_access_modifier_style = 'outdent'

这是来自Vim的ruby支持,vim-ruby(documentation)的配置设置。

请注意,这仅适用于最新的Vim版本。我不太确定哪个,但是,如果它对您不起作用,请手动安装vim-ruby插件,就像普通的插件一样 - 这样就可以让您访问最新的插件运行时文件,包括这个设置(这可能是一个混合的祝福,目前在heredoc突出显示方面有些奇怪)。