如何在Vim中为Ruby覆盖默认的制表符缩进?

9

我正在使用Janus来管理vim,非常喜欢它,但是我无法将我的首选tabstop设置为4。以下是我的.vimrc文件:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

稍后我有

filetype plugin indent on

但是所有的Ruby文件都继续使用默认版本2,我就是不喜欢这一点。我尝试按照这个页面的说明操作,包括在after文件夹中创建一个ruby.vim文件(以及Janus创建的indent文件夹中),添加如下内容:
au FileType ruby set softtabstop=4 tabstop=4 shiftwidth=4

我尝试添加一些设置到我的.vimrc文件中,但它们都没有生效。

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

有什么问题吗?


尝试在 filetype plugin indent on 之后设置选项卡内容 - cam
那是我尝试的第一件事。 - swilliams
14
你可以尝试输入 :verbose set tabstop sw softtabstop expandtab ? 命令,它会告诉你是哪个脚本修改了你的值为4的设置。 - Xavier T.
1
Xavier T. 成功了!它告诉我有一个 autoload/rails.vim 文件设置了那些值。我打开它并将值更改为 4。如果你想将其作为真正的答案添加在下面,我会标记它为已接受。 - swilliams
6个回答

6

Xavier T的评论提供了答案,但是他并没有给出实际的回答,这里是答案:

你可以尝试使用:verbose set tabstop sw softtabstop expandtab ?。它应该会告诉你哪个脚本修改了你的值为4。

这让我发现autoload/rails.vim是将制表符间距设置回去的原因。


1
根据Janus的(至少当前版本),首选覆盖设置的方法是编辑~/.vimrc.after文件。该文件在所有Janus内容加载后被加载,您在其中放置的任何内容都应该覆盖其他地方设置的任何设置。

0

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

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

然后Janus会在加载janus之后加载.vimrc.after文件


0

一旦进入vim,运行:set tabstop,它将显示上次设置的内容。如果这与您预期的不同,则意味着它被覆盖了。要进行调试,请使用find或ack(我个人最喜欢的)查找所有包含单词tabstop的文件。一个好的起点是在您的.vimrc文件夹内运行ack -l tabstop。


0

0

如果我没记错的话,那个设置可以在tpope的ruby/rails插件中找到。我不确定,但是如果你尝试在.vimrc文件的末尾设置选项卡设置,它们应该会起作用。

此外,特别是如果你正在使用macvim/gvim,请检查.gvimrc文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接