2016-01-04 23 views
0

在我的〜/ .vimrc,我有一个,如果确定是应该声明,如果打开的文件是一个Python文件或不:Vim的文件类型声明不工作

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

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

回答

1

尝试类似的东西来代替:

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

.vimrc配置文件在启动时只运行一次。因此,如果您此时进行if测试,它将不起作用,因为当前没有编辑python文件。

但是你可以用.vimrc设置一个自动行为:一些vim将每次都会遇到一个特殊的条件做。条件可以在你的情况:“一个新文件正在编辑,其文件类型是'python'”。见:h :au

在像你这样的情况下,是非常有用的添加<buffer>参数在:map命令:它限制你映射的范围,只有当前缓冲区:所以当你按下一个非蟒蛇缓冲F9 ,映射不会被激怒。

编辑:
在我的第一个答案,我还你的命令删除<esc>也许我错了这一点,因为它可以造成视觉模式的问题,所以我把它再次。你必须以视觉模式测试它,我没有这样做。

+0

谢谢,这工作。但是你知道我的版本有什么问题吗? – Vityou

+0

请看我的编辑 – yolenoyer