1

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

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

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

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

4

1 回答 1

1

: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

于 2015-12-11T13:45:04.730 回答