如何在Vim中覆盖Ruby的默认tabindent?

如何在Vim中覆盖Ruby的默认tabindent?,ruby,vim,indentation,Ruby,Vim,Indentation,我正在使用vim,我真的很喜欢它,但我似乎无法让我喜欢的4号制表符正常工作。这是我的.vimrc set tabstop=4 set shiftwidth=4 set softtabstop=4 set expandtab 后来我 filetype plugin indent on 但是我所有的ruby文件都使用默认版本的2,我就是不喜欢。我已经尝试按照上的说明进行操作,包括在after文件夹(以及janus创建的indent文件夹)中创建ruby.vim文件。我补充说: au FileTy

我正在使用vim,我真的很喜欢它,但我似乎无法让我喜欢的4号制表符正常工作。这是我的
.vimrc

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
后来我

filetype plugin indent on
但是我所有的ruby文件都使用默认版本的2,我就是不喜欢。我已经尝试按照上的说明进行操作,包括在after文件夹(以及janus创建的
indent
文件夹)中创建
ruby.vim
文件。我补充说:

au FileType ruby set softtabstop=4 tabstop=4 shiftwidth=4
给我的vimrc,但这些都不起作用

我可以从命令模式手动调用
set tabstop
等,这很有效,但这不是一个很好的解决方案


缺少什么?

如果我没有错的话,这个设置可以在tpope的ruby/rails插件中找到。我不确定,但是如果您尝试在.vimrc末尾设置选项卡设置,它们应该可以工作


另外,在.gvimrc处进行检查,特别是如果您正在使用macvim/gvim,一旦进入vim,运行:set tabstop,它将显示上次设置的内容。如果这与您期望的不同,则表示它正在被覆盖。要进行调试,请使用find或ack(我个人的最爱)查找包含tabstop一词的所有文件。从.vimrc文件夹中开始运行ack-l tabstop是个不错的选择。

第141-160行

这是一个相当粗糙的方法,最初它做了一些其他的事情。它需要重构,但这应该给你足够的支持。

根据Janus的(至少是当前版本)

覆盖设置的首选方法是编辑~/.vimrc.after


这个文件在所有Janus的东西之后被加载,你在那里输入的任何东西都应该覆盖其他地方设置的任何设置。

只需创建一个文件
~/.vimrc.after

在文件中,将tab设置为4个空格
set tabstop=4


然后,janus将在janus的评论提供答案后加载.vimrc.after文件,但由于他实际上没有给出答案,因此如下所示:

您能试试:详细设置tabstop sw softtabstop expandtab吗?。它应该告诉您哪个脚本正在修改您的值4


这让我看到
自动加载/rails.vim
是设置制表符间距的原因。

尝试在
文件类型插件缩进后设置制表符,这是我尝试的第一件事。你能试试
:verbose set tabstop sw softtabstop expandtab吗?
。它应该能告诉你哪个脚本正在修改你的4.Xavier T的值,这是有效的!它告诉我有一个
自动加载/rails.vim
文件设置这些。打开它并将值更改为4。如果你想在下面加上这个答案,我会把它标记为接受。