我想给我的vim添加一个热键来运行我的python文件,所以我在我的vimrc中添加了以下行:
autocmd FileType python map <F5> :w|!python3 %
但是在打开文件而不是运行autocmd时,它会使用我的文件运行python。
对我来说,这似乎与许多教程中关于使用autocmd和map的建议没有什么不同,所以我想知道这里到底发生了什么,而不是我期望的行为。
您的:map
命令以命令分隔符|
结尾;当CCD_ 3运行时,剩余部分已经被执行。您需要转义它(|
),或者最好使用特殊的<Bar>
字符:
autocmd FileType python nnoremap <buffer> <F5> :w<Bar>!python3 %<CR>
Cp。:help map_bar
。此外,您应该使用:noremap
;它使映射不受重映射和递归的影响。并且(正如@PeterRincker所建议的),将映射缓冲区设为本地缓冲区,这样它只适用于Python缓冲区。
您的:autocmd FileType
方法对于一些映射来说很好,但它的伸缩性不好。如果您的~/.vimrc
中有:filetype plugin on
,您可以将您的映射因素化为一个单独的脚本~/.vim/ftplugin/python_mappings.vim
。