`filetype plugin` 在哪里定义以及如何覆盖它?
Where is `filetype plugin` defined and how to override it?
我正在尝试设置 python 缩进以使用 2 个空格而不是 4(或 8)个空格。我将以下内容放入 ~/.vimrc
:
set expandtab
set shiftwidth=2
set softtabstop=2
set tabstop=2
只要我不也将filetype plugin on
放入配置中,这就可以正常工作。当我 做 有 filetype plugin on
时,当我打开一个 python 文件时,set tabstop?
将 return 8 并且缩进弄乱了。
所以我的问题是:(1) filetype plugin on
是如何工作的以及文件类型特定的配置文件位于何处? (2) 如何覆盖我的 ~/.vimrc
(或其他地方)中特定于文件类型的配置?
首先启用加载特定文件类型的插件文件
filetype plugin on
This actually loads the file "ftplugin.vim" in 'runtimepath'.
The result is that when a file is edited its plugin file is loaded (if there is one for the detected filetype).
您可以启用加载缩进文件:
filetype indent on
您可以合并它:
filetype plugin indent on
然后为 python 自定义规则:
au FileType python set et sts=2 sw=2 ts=2
filetype plugin on
是如何工作的以及文件类型特定的配置文件位于何处?
filetype on
启用文件类型检测,正如其名称所暗示的那样。
filetype plugin on
启用文件类型检测和文件类型插件,它们是 vimscript 文件,包含用于设置各种选项、定义映射等的特定于文件类型的命令。这些 ftplugins 位于 $VIMRUNTIME/ftplugin/
下,您可以在 ~/.vim/ftplugin/
或 ~/.vim/after/ftplugin/
下以及 &runtimepath
and/or &packpath
.
下的各个地方创建自己的
根据“python”标签判断,您遇到问题的 ftplugin 是 $VIMRUNTIME/ftplugin/python.vim
,它有以下片段:
if !exists("g:python_recommended_style") || g:python_recommended_style != 0
" As suggested by PEP8.
setlocal expandtab tabstop=4 softtabstop=4 shiftwidth=4
endif
如何在我的 ~/.vimrc
(或其他地方)覆盖特定于文件类型的配置?
一般,有两种方法可以选择:
在您的 vimec
中添加 FileType
自动命令:
augroup myFiletypes
autocmd!
autocmd FileType foo setlocal this=that
[…]
augroup END
把你的设置放在他们自己的ftplugins中:
" in after/ftplugin/foo.vim
setlocal this=that
后者更干净
在此特定情况下,该功能位于全局变量后面,因此您只需将设置保持在vimrc
“原样”中并添加以下行(这会让你的同事发疯):
let g:python_recommended_style = 0
根据 :help ft-python-plugin
.
我正在尝试设置 python 缩进以使用 2 个空格而不是 4(或 8)个空格。我将以下内容放入 ~/.vimrc
:
set expandtab
set shiftwidth=2
set softtabstop=2
set tabstop=2
只要我不也将filetype plugin on
放入配置中,这就可以正常工作。当我 做 有 filetype plugin on
时,当我打开一个 python 文件时,set tabstop?
将 return 8 并且缩进弄乱了。
所以我的问题是:(1) filetype plugin on
是如何工作的以及文件类型特定的配置文件位于何处? (2) 如何覆盖我的 ~/.vimrc
(或其他地方)中特定于文件类型的配置?
首先启用加载特定文件类型的插件文件
filetype plugin on
This actually loads the file "ftplugin.vim" in 'runtimepath'. The result is that when a file is edited its plugin file is loaded (if there is one for the detected filetype).
您可以启用加载缩进文件:
filetype indent on
您可以合并它:
filetype plugin indent on
然后为 python 自定义规则:
au FileType python set et sts=2 sw=2 ts=2
filetype plugin on
是如何工作的以及文件类型特定的配置文件位于何处?filetype on
启用文件类型检测,正如其名称所暗示的那样。
下的各个地方创建自己的filetype plugin on
启用文件类型检测和文件类型插件,它们是 vimscript 文件,包含用于设置各种选项、定义映射等的特定于文件类型的命令。这些 ftplugins 位于$VIMRUNTIME/ftplugin/
下,您可以在~/.vim/ftplugin/
或~/.vim/after/ftplugin/
下以及&runtimepath
and/or&packpath
.根据“python”标签判断,您遇到问题的 ftplugin 是
$VIMRUNTIME/ftplugin/python.vim
,它有以下片段:if !exists("g:python_recommended_style") || g:python_recommended_style != 0 " As suggested by PEP8. setlocal expandtab tabstop=4 softtabstop=4 shiftwidth=4 endif
如何在我的
~/.vimrc
(或其他地方)覆盖特定于文件类型的配置?一般,有两种方法可以选择:
在您的
vimec
中添加FileType
自动命令:augroup myFiletypes autocmd! autocmd FileType foo setlocal this=that […] augroup END
把你的设置放在他们自己的ftplugins中:
" in after/ftplugin/foo.vim setlocal this=that
后者更干净
在此特定情况下,该功能位于全局变量后面,因此您只需将设置保持在
vimrc
“原样”中并添加以下行(这会让你的同事发疯):let g:python_recommended_style = 0
根据
:help ft-python-plugin
.