Vimrc-autocmd运行命令而不是映射



我想给我的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

相关内容

  • 没有找到相关文章

最新更新