繁体   English   中英

vimrc:除非“文件类型检测”第一次运行,否则检查&ft无效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM