2015-12-11 89 views
1

我想一個熱鍵添加到我的VIM運行我的python文件,所以我已經添加以下行到我的vimrc:.vimrc中自動命令運行命令,而不是映射

autocmd FileType python map <F5> :w|!python3 % 

但在打開文件,而不是運行autocmd,它會用我的文件運行python。

對我來說,這與使用autocmd和map的許多教程建議沒有什麼不同,所以我想知道這裏發生了什麼,而不是我期望的行爲。

回答

1

您的:map命令在命令分隔符|處結束;其餘部分在:autocmd運行時已經執行。你需要轉義(\|),或更好地使用特殊字符<Bar>

autocmd FileType python nnoremap <buffer> <F5> :w<Bar>!python3 %<CR> 

的CP。 :help map_bar。另外,you should use :noremap;它使映射免於重映射和遞歸。 (如@PeterRincker建議的那樣),使映射緩衝區爲本地,以便它僅適用於Python緩衝區)。


您的:autocmd FileType方法適用於少量映射,但效果並不好。如果您的~/.vimrc中有:filetype plugin on,則可以將我們的映射歸入單獨的腳本~/.vim/ftplugin/python_mappings.vim

+1

也許最好使用緩衝區局部映射以及通過''。請參閱':h:map-local'。 –