2015-12-11 55 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'。 –