vimrc:除非“filetype detect”第1次运行,否则check& ft不起作用

时间:2013-12-29 01:20:54

标签: vim

我正在运行OS X 10.9。我下载了Python 3.3.3 .dmg文件并安装了它。我通过谷歌代码(mercurial)下载vim代码(不是macvim),并使用以下命令构建它:

./configure --enable-python3interp --with-python3-config-dir=/Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3
make VIMRUNTIMEDIR=/usr/local/share/vim/vim74
sudo make install

一切似乎都能正常运作。我提到这一切是为了试图掩盖我的基础,以防我引起了我自己的问题。

我想弄清楚的是,为什么当我用"if &ft == 'python'检查文件类型时,如果我运行"filetype detect" 1st,它只返回true。我没有运行"filetype on"或任何其他文件类型命令。我知道Vim正确识别我的.py文件没有"filetype detect",因为我可以运行“:echo& ft”并返回“python”。

这是正常行为还是我在编译中搞砸了什么?让我觉得这可能不正常的是我从示例.vimrc文件中找到的每个示例我都没有看到其他人在运行"filetype detect"

感谢。

编辑:我在if语句之前使用"filetype on"尝试了此操作,没有"filetype detect",但这似乎也不起作用。

2 个答案:

答案 0 :(得分:1)

来自:help filetype-detect

...
   When filetype detection was off, it will be enabled first, like the "on"
argument was used.

因此,这些序列中的任何一个都应该具有将'filetype'设置为“python”的效果:

:filetype on
:e foo.py

:e foo.py
:filetype detect

我的偏好是将:filetype on直接添加到我的vimrc文件中,或者添加

:runtime vimrc_example.vim

答案 1 :(得分:0)

除了初始条件检测文件类型问题之外,我还遇到了在打开新选项卡或拆分时失败的情况。当我检查以下内容时,无论文件类型如何,条件内的任何内容都将应用于新缓冲区:

filetype detect
if &ft == 'python' 
    ....
endif

但是,每次新的缓冲区加载都会正确检查以下内容:

au BufRead *.py [arguments]

,如

au BufRead *.py let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)

我希望这有助于其他人。