Compilation :compiler命令在Vim中做什么?
我最近发现Vim中有一个名为compiler的命令。您可以使用任何通用编译器(例如,:compiler gcc,:compiler php等)调用它,但它似乎没有任何即时效果Compilation :compiler命令在Vim中做什么?,compilation,command,vim,Compilation,Command,Vim,我最近发现Vim中有一个名为compiler的命令。您可以使用任何通用编译器(例如,:compiler gcc,:compiler php等)调用它,但它似乎没有任何即时效果 我在手册页上搜索了一下,但没有找到任何关于它实际功能的有用信息,Vim Wiki也没有。有人知道这个命令的实际作用吗 它为该编译器设置选项,例如用于:make的程序和错误消息的格式,以便vim可以将您跳转到错误位置。在$VIMRUNTIME/compiler/中查找可以来源的不同.vim文件 :帮助编写编译器插件 编译器插
我在手册页上搜索了一下,但没有找到任何关于它实际功能的有用信息,Vim Wiki也没有。有人知道这个命令的实际作用吗 它为该编译器设置选项,例如用于
:make
的程序和错误消息的格式,以便vim可以将您跳转到错误位置。在$VIMRUNTIME/compiler/
中查找可以来源的不同.vim文件
:帮助编写编译器插件
编译器插件设置用于特定编译器的选项。用户可以
使用:compiler
命令加载它。主要用途是设置
“errorformat”和“makeprg”选项
另请参见:help errorformat
和:help makeprg
下面是我机器上的GCC编译器文件,例如:
/usr/share/vim/vim72/compiler/gcc.vim
Vim编译器文件
编译器:GNUC编译器
“维护者:尼古拉·威布尔
“最新修订:2006-12-20
如果存在(“当前_编译器”)
完成
恩迪夫
让当前编译器=“gcc”
让我们:cpo_save=&cpo
设置cpo-=C
编译器集错误格式=
\%*[^\“]\%f\”%*\\D%l:\%m,
\\%f\“%*\\D%l:\%m,
\%-G%f:%l:\%tror:\(每个\未声明\标识符\只\报告\一次,
\%-G%f:%l:\%t错误:\for\each\function\it\reseated\in.),
\%f:%l:\%m,
\\%f\“\\,\line\%l%*\\D%c%*[^\]\%m,
\%D%*\\a[%*\\D]:\Entering\目录\`f',
\%X%*\\a[%*\\d]:\Leaving\目录\`f',
\%D%*\\a:\正在输入\目录\`f',
\%X%*\\a:\Leaving\目录\`f',
\%在\%f中制作\%*\\a\
如果存在('g:compiler\u gcc\u ignore\u unmatched\u line')
编译器集errorformat+=%-G%。%#
恩迪夫
让&cpo=s:cpo\u保存
取消设置s:cpo_保存
它为当前缓冲区的所选编译器设置选项。如果编辑java文件,可以执行以下操作:编译器javac,然后,:make%编译当前文件…Vim通常安装了许多常见的编译器配置,如前所述,因此它会自动选择适当的配置。要实际使用该编译器,请执行以下操作:iler配置您需要使用Vim:make函数,如前所述,但默认操作模式要求存在
Makefile
如果您只是尝试在当前文件/缓冲区上进行快速编译(没有现有的Makefile),那么如果您安装了gnumake,您可以这样编译它(如所述):
它将编译该文件并向vim提供错误/警告,以便您可以使用quickfix(:help quickfix
)列表导航每个错误-:cn
下一个错误,:cp
上一个错误,:cw
新窗口列出错误
如果未安装GNU make,则可以设置此变量-在当前会话中立即设置,如下所示:
:se makeprg=gcc\ -o\ %<\ %
它将编译该文件,并在Vim中为您提供错误/警告的快速修复列表
编辑:如果您还想从vim中运行编译后的可执行文件,您可以执行(“!”执行,“%:r”是不带后缀的文件名):
我写了一个简单的c程序,运行了
:编译器gcc
和:make%
,我得到了make:dummy.c.没有什么要做的。
这似乎没有设置makeprg
。我不明白这个文件的用途是什么?你需要一个现有的Makefile作为:make
的默认操作模式,但是你可以设置vim工作有无生成文件-请参阅下面的答案。
:help compiler
:make %:r
:se makeprg=gcc\ -o\ %<\ %
set makeprg=gcc\ -o\ %<\ %
:make
:!./%:r