[英]vimrc: checking &ft doesn't work unless “filetype detect” ran 1st
我正在运行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"
它只会返回true。 我没有运行"filetype on"
或任何其他文件类型命令。 我知道Vim可以正确识别我的.py文件而不使用"filetype detect"
因为我可以运行“:echo&ft”,并且返回“ python”。
这是正常现象还是我在编译中搞砸了? 让我认为这可能不正常的原因是,我可以从示例.vimrc文件中找到每个示例,但看不到其他任何运行"filetype detect"
。
谢谢。
编辑:我已经尝试了if语句之前使用"filetype on"
,而没有"filetype detect"
,但这似乎也不起作用。
来自: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
除了对文件类型问题进行初始条件检测之外,我还遇到了在打开新选项卡或拆分时失败的情况。 当我检查以下内容时,无论文件类型如何,条件中的任何值都将应用于新缓冲区:
filetype detect
if &ft == 'python'
....
endif
但是,对于每个新的缓冲区加载,以下内容均已正确检查:
au BufRead *.py [arguments]
如
au BufRead *.py let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
我希望这对其他人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.