自动命令无法在Vim中工作,如何根据文件类型设置makeprg?

时间:2010-05-26 06:25:06

标签: vim

我使用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。

那为什么这个自动命令不起作用?我错过了什么吗? 谢谢你的耐心

1 个答案:

答案 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覆盖单个缓冲区。