2016-01-04 26 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