Vim filetype if语句不起作用

时间:2016-01-04 00:55:44

标签: vim file-type

在我的〜/ .vimrc中,我有一个if语句,用于确定打开的文件是否是python文件:

if (&ft=='python')
    map <F9> <esc>:w<enter>:!python3 '%'<enter>
endif

如果文件是python文件,目标是将python执行命令绑定到F9,但是当我在.py文件中按F9时没有任何反应。我拿出了if语句,它起作用了。出了什么问题?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

au FileType python map <buffer> <F9> <esc>:w<bar>!python3 '%'<cr>

您的.vimrc配置文件在启动时只运行一次。因此,如果您此时进行if测试,它将无法正常工作,因为当前没有编辑任何python文件。

但您可以使用.vimrc设置自动行为:vim每次遇到特殊情况时都会执行此操作。条件可以是您的情况:&#34;正在编辑新文件,其文件类型为&#39; python&#39;&#34;。见:h :au

在像您这样的情况下,在<buffer>命令中添加:map参数很有用:它仅将映射范围限制为当前缓冲区:所以当您按下时非python缓冲区上的 F9 ,映射不会被触发。

编辑:
在我的第一个答案中,我还删除了您的命令<esc>可能我错了,因为它可能会导致视觉模式出现问题,所以我再次说出来。你必须在视觉模式下测试它,我没有做到。