我希望vim在保存.cpp
文件后运行g ++来编译它。我怎样才能做到这一点?我知道如何将外部命令映射到键,但我想知道如何将命令映射到另一个命令。
答案 0 :(得分:1)
我不会这样做。大多数情况下,我们保存不完全可编译的文件(因为我们要更新标签数据库,确保文件在回家前保存)。此外,大多数项目都不是由单个文件组成的。
但无论如何。您正在寻找BufWritePost
自动命令。例如,
aug AutoCompileCppFiles
au!
au BufWritePost *.cpp,*.c make
aug END
BTW,:make
将完成工作,因为它会在大多数系统上调用gnumake,而gnumake已经知道如何编译单个隔离文件。如果要对编译进行参数化,只需设置$ LDFLAGS和$ CXXFLAGS; e.g:
:let $CXXFLAGS='-std=c++0x -Wall -pedantic'
答案 1 :(得分:1)
您使用:autocmd
。在:write
之后,BufWritePost
事件被触发。请参阅:h autocmd-events
了解可用的内容。
:autocmd BufWritePost <buffer> !g++ %
%
表示当前文件(已写入)。
更好的选择可能是调用:make
;这也可以处理多个单个文件编译。
要为所有 C ++文件安装该文件,您只需将<buffer>
替换为*.cpp
,但是您将复制文件类型检测内置于Vim。最好将上述:autocmd
放入例如~/.vim/ftplugin/cpp_autocompile.vim
。 :filetype plugin on
。 (这需要您:autocmd FileType cpp autocmd BufWritePost...
。或者,您可以直接在~/.vimrc
中定义{{1}},但是一旦您进行了多次自定义,这往往会变得难以处理。