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