Vim 文件类型打开还是关闭?

Vim 文件类型打开还是关闭?,vim,pathogen,Vim,Pathogen,我为gvim使用aghogen插件。配置时,我在我的vimrc文件中设置以下内容: call pathogen#infect() call pathogen#helptags() call pathogen#runtime_append_all_bundles() filetype on "force reloading *after* pathogen loaded 现在我跟随Martin Brochhaus的来设置Vim,使其对Python编码有用,他建议如下: filetype of

我为
gvim
使用
aghogen
插件。配置时,我在我的
vimrc
文件中设置以下内容:

call pathogen#infect()
call pathogen#helptags()
call pathogen#runtime_append_all_bundles()

filetype on  "force reloading *after* pathogen loaded
现在我跟随Martin Brochhaus的来设置Vim,使其对Python编码有用,他建议如下:

filetype off
filetype plugin indent on
syntax on 

所以目前我对病原体启用了
filetype
,但他建议关闭
filetype
。这行代码是做什么的?我应该如何配置
vimrc
,以便让病原体和Python都满意

打开文件类型启用文件类型检测。

文件类型插件
文件类型缩进
设置为
打开
将启用文件类型检测(如果文件类型检测尚未启动)。请参见
:help filetype

当紧跟
:filetype[plugin indent]on
(如
:help filetype plugin on
所述,再次打开文件类型检测时,
:filetype off
是多余的;不要盲目信任互联网上的任意资源:-)

您通常需要文件类型检测(以便加载相应的语法以突出显示(使用
:syntax on
)、文件类型特定的设置(插件部分)和缩进规则(
缩进)

病原体的唯一缺陷是它应该在病原体初始化之后出现,但你做得对

call pathogen#runtime_append_all_bundles()
根本不需要:该函数已被弃用,并且无论如何都没有用处

如果你真的需要安全,这就是你应该在
~/.vimrc
顶部拥有的:

" turn filetype detection off and, even if it's not strictly
" necessary, disable loading of indent scripts and filetype plugins
filetype off
filetype plugin indent off

" pathogen runntime injection and help indexing
call pathogen#infect()
call pathogen#helptags()

" turn filetype detection, indent scripts and filetype plugins on
" and syntax highlighting too
filetype plugin indent on
syntax on
然而,我已经有以下问题很久了,没有任何明显的问题:

call pathogen#infect()
call pathogen#helptags()

filetype plugin indent on
syntax on

好的-似乎有点奇怪,在那个教程中,他建议关闭
文件类型
-他没有说为什么-将其设置为关闭有什么好处?@whytheq我知道Vundle过去也需要此设置,因为它在加载时会导致错误(但这是在vim中修补的)。然而,我自己用vim运行病原体,没有这一行,也没有遇到任何问题。相关问题:。这在上有详细解释。不,这并不是完全多余的
:filetype off实际上做了一些非常具体的事情,即在运行时文件中执行
ftoff.vim,这有真正的副作用。例如,它取消定义可能由系统vimrc设置的自动命令组。@glts技术上正确,但是(在启动时在.vimrc中运行时),
ftoff.vim
中的操作被
:filetype on
撤消。不仅在技术上,这可能会产生真正的后果:有人告诉我,一些Linux发行版在vimrc系统中有
文件类型。在这种情况下,如果不再次执行
文件类型关闭
打开
,则无法在
~/.vim
中添加ftdetect脚本。幸运的是,病原体内部确实关闭了
文件类型
,所以我们不必担心这一点。同意。请注意,t打开首选的
infect()。