我想在我的vim中添加一个热键来运行我的python文件,所以我将以下行添加到我的vimrc中:
autocmd FileType python map <F5> :w|!python3 %
但是在打开文件而不是运行autocmd时,它会使用我的文件运行python。
对我而言,这似乎与许多教程建议使用autocmd和map没什么不同,所以我想知道这里到底发生了什么,而不是我期望的行为。
答案 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
。