Vim中filetype plugin定义位置及覆盖方法,解决Python缩进异常问题
问题1:filetype plugin on的运行逻辑与文件类型专属配置路径
filetype plugin on的核心作用是启用Vim的文件类型识别机制:Vim打开文件时会根据后缀名、文件头特征判断文件类型,之后自动加载对应类型的专属预设配置和插件。
- 内置文件类型默认配置的存放路径为Vim运行时目录下的
$VIMRUNTIME/ftplugin/,Python的默认缩进、制表符规则就定义在该目录的python.vim文件中,这类内置配置的加载优先级高于.vimrc中的全局配置,所以开启该参数后你的全局缩进设置会被覆盖,导致tabstop变为8。 - 用户自定义文件类型配置的存放路径为
~/.vim/ftplugin/(Neovim对应路径为~/.config/nvim/ftplugin/),该路径下的配置优先级高于内置配置,可用来覆盖默认规则。
问题2:覆盖文件类型专属配置的可用方法
你可以选择以下任意一种方法实现Python文件固定2空格缩进的需求:
- 方法1:在
.vimrc中添加FileType自动命令(最简便,无需额外创建文件)
将以下代码写在.vimrc中filetype plugin on这行的后面,确保规则加载顺序正确:
注意必须使用autocmd FileType python setlocal expandtab shiftwidth=2 softtabstop=2 tabstop=2setlocal而非全局set,避免配置影响其他类型的文件。 - 方法2:在自定义ftplugin目录创建专属配置(适合多文件类型自定义规则的场景)
先创建目录(如果不存在):mkdir -p ~/.vim/ftplugin
之后在该目录下新建python.vim文件,写入配置:setlocal expandtab setlocal shiftwidth=2 setlocal softtabstop=2 setlocal tabstop=2 - 方法3:直接禁用Python内置缩进规则
在.vimrc中添加变量定义,即可关闭Python ftplugin自带的默认缩进预设,你之前写的全局配置就会正常生效:let g:python_recommended_style = 0
内容的提问来源于stack exchange,提问作者Ying Xiong
相关产品推荐
相关产品推荐

