我使用Vim编辑器编程,这是我面临的问题。
我使用多个标签同时编辑C ++和Python文件,我在.vimrc文件中添加了以下内容
filetype plugin indent on
au filetype python set mp=python3\ %
au filetype cpp set mp=g++\ -Werror\ -Wextra\ -Wall\ -ansi\ -pedantic-errors\ -g\ %
即我想要的是当我切换到带有Python文件的选项卡并运行:make
时,它应该运行:!python3 %
,当我切换到带有C ++文件的选项卡并运行{ {1}}它应该运行:make
然而它不起作用,每次我切换选项卡并运行:!g++ -Werror -Wextra -Wall -ansi -pedantic-errors -g %
时,它会尝试执行:make
,当我在2个文件(即Python和C ++)上运行!g++ -Werror -Wextra -Wall -ansi -pedantic-errors -g %
时检查文件类型是否已正确识别,我得到正确的结果,即python和cpp。
那为什么这个自动命令不起作用?我错过了什么吗? 谢谢你的耐心
答案 0 :(得分:7)
尝试使用setlocal
代替set
。 e.g:
filetype plugin indent on
au filetype python setlocal mp=python3\ %
au filetype cpp setlocal mp=g++\ -Werror\ -Wextra\ -Wall\ -ansi\ -pedantic-errors\ -g\ %
如果您阅读:help mp
,则会看到该设置为“全局或本地缓冲区global-local”。这意味着您可以使用set
全局应用makeprg,或setlocal
覆盖单个缓冲区。