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
#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
修改命令中所需的内容。我的样子是因为我使用制表符而不是空格。
评论
即使它不能回答您的问题,我还是尝试使用vim-plug而不是Vundle,并且效果很好...请参阅常见问题
您还可以使用新的OptionSet自动命令来重置shiftwidth和softtabstop设置