我使用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\ %
Run Code Online (Sandbox Code Playgroud)
即我想要的是,当我切换到带有Python文件的选项卡并运行时:make
,它应该运行:!python3 %
,当我切换到带有C++文件的选项卡并运行:make
它应该运行:!g++ -Werror -Wextra -Wall -ansi -pedantic-errors -g %
然而它不起作用,每次我切换选项卡并运行时:make
,它会尝试执行!g++ -Werror -Wextra -Wall -ansi -pedantic-errors -g %
,当我运行:set ft?
2个文件(即Python和C++)来检查文件类型是否已被正确识别时,我得到了正确的结果,即python和cpp.
那为什么这个自动命令不起作用?我错过了什么吗?谢谢你的耐心
尝试使用setlocal
而不是set
.例如:
filetype plugin indent on
au filetype python setlocal mp=python3\ %
au filetype cpp setlocal mp=g++\ -Werror\ -Wextra\ -Wall\ -ansi\ -pedantic-errors\ -g\ %
Run Code Online (Sandbox Code Playgroud)
如果您阅读:help mp
,您将看到该设置是"全局或本地缓冲 全局 - 本地 ".这意味着您可以使用set
全局应用makeprg,或者setlocal
为单个缓冲区覆盖它.