我昨天安装了vundle,自从我安装了vundle以来,我在vimrc中配置的tabwidth被忽略,并设置回4而不是2。

filetype plugin indent on


我的缩进设置如下:

set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround  " Round indent to multiple of 'shiftwidth'
set smartindent " Do smart indenting when starting a new line
set autoindent  " Copy indent from current line, over to the new line

" Set the tab width
let s:tabwidth=2
exec 'set tabstop='    .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth


您可以在此处查看我的完整vimrc。

我使用python脚本测试了缩进问题(缩进确实很重要)。仅注释掉该行会有所帮助。
现在,vundle安装指南说,此行是必需的。

我该如何解决缩进问题?我可以省略文件类型行还是将其保留在vimrc中是强制性的?解决方案:

由于@ChristianBrabandt和@romainl,我现在找到了一个解决方案也可以驻留在单个vimrc文件中:

filetype plugin indent on



set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround  " Round indent to multiple of 'shiftwidth'
set autoindent  " Copy indent from current line, over to the new line

" Set the tab width
let s:tabwidth=2
au Filetype * let &l:tabstop = s:tabwidth
au Filetype * let &l:shiftwidth = s:tabwidth
au Filetype * let &l:softtabstop = s:tabwidth


评论

即使它不能回答您的问题,我还是尝试使用vim-plug而不是Vundle,并且效果很好...

请参阅常见问题

您还可以使用新的OptionSet自动命令来重置shiftwidth和softtabstop设置

#1 楼

首先是第一件事;下面的行与Vundle或插件管理绝对无关:

filetype plugin indent on


该命令执行三件事:


启用文件类型检测,
启用特定于文件类型的脚本(ftplugins),
启用特定于文件类型的缩进脚本。

该行存在,因为某些插件管理器必须确保检测到文件类型如果没有ftplugins和适当的缩进,在进行魔术操作和使用Vim进行编程之前将其禁用会更加困难。我认为它们应该只在内部处理文件类型检测,但是很好...

无论如何,您的问题是由于过多的ftplugins覆盖了它们的缩进设置而引起的。 python ftplugin是最常见的罪魁祸首,因为不久前就决定强制执行PEP8。

最简单的方法是避免一起采购ftplugins:

filetype indent on


,但是它们通常带有有用的东西,因此不建议真正使用该方法。

最干净的解决方案是将filetype行保持其“最佳”状态:

filetype plugin indent on


,并使用您自己的after/ftplugin/python.vim覆盖其替代项:

setlocal noexpandtab
setlocal shiftround
setlocal autoindent

let s:tabwidth=2
let &l:tabstop = s:tabwidth
let &l:shiftwidth = s:tabwidth
let &l:softtabstop = s:tabwidth


注意:


我删除了smartindent,因为它一开始并不聪明,反而被特定于文件类型的缩进脚本所弃用。 />

评论


如果将shiftwidth设置为零并将softtabstop设置为-1,它将遵循tabstop设置。

–克里斯蒂安·布拉班特(Christian Brabandt)
15年8月27日在9:57

感谢您的解释。我想在vimrc中保留大多数设置,因为我想将它们同步到多台计算机。我在vimrc中使用了您的解决方案,并在问题下方使用了常见问题链接@ChristianBrabandt,它可以正常工作。我将编辑问题以包括解决方案。

– wullxz
15年8月27日在12:11

#2 楼

缩进问题来​​自ftplugin,该插件从/usr/share/vim/vim-version-/ftplugin/-filetype-.vim加载.vim文件,该文件将覆盖.vimrc文件中的内容。您可以通过在vim :verbose set tabstop?中运行以下命令来找出该文件的位置。输出将使您指向覆盖您的配置的文件。

我的python缩进配置遇到问题。

解决此问题的一种简单方法是执行以下操作:

在主文件夹中创建一个.vim文件夹(如果没有的话)

cd ~/.vim
mkdir -p after/ftplugin/
cd ~/.vim/after/ftplugin/
vim python.vim


添加以下内容:

setlocal noexpandtab shiftwidth=4 softtabstop=4 tabstop=4


修改命令中所需的内容。我的样子是因为我使用制表符而不是空格。