Vimrc autocmd运行命令而不是映射

时间:2015-12-11 12:58:02

标签: vim autocmd

我想在我的vim中添加一个热键来运行我的python文件,所以我将以下行添加到我的vimrc中:

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

但是在打开文件而不是运行autocmd时,它会使用我的文件运行python。

对我而言,这似乎与许多教程建议使用autocmd和map没什么不同,所以我想知道这里到底发生了什么,而不是我期望的行为。

1 个答案:

答案 0 :(得分: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方法适用于一些映射,但它不能很好地扩展。如果:filetype plugin on中有~/.vimrc,则可以将我们的映射计算为单独的脚本~/.vim/ftplugin/python_mappings.vim