我正在运行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"
,但这似乎也不起作用。
答案 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)
我希望这有助于其他人。