Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compilation :compiler命令在Vim中做什么?_Compilation_Command_Vim - Fatal编程技术网

Compilation :compiler命令在Vim中做什么?

Compilation :compiler命令在Vim中做什么?,compilation,command,vim,Compilation,Command,Vim,我最近发现Vim中有一个名为compiler的命令。您可以使用任何通用编译器(例如,:compiler gcc,:compiler php等)调用它,但它似乎没有任何即时效果 我在手册页上搜索了一下,但没有找到任何关于它实际功能的有用信息,Vim Wiki也没有。有人知道这个命令的实际作用吗 它为该编译器设置选项,例如用于:make的程序和错误消息的格式,以便vim可以将您跳转到错误位置。在$VIMRUNTIME/compiler/中查找可以来源的不同.vim文件 :帮助编写编译器插件 编译器插

我最近发现Vim中有一个名为compiler的命令。您可以使用任何通用编译器(例如,:compiler gcc,:compiler php等)调用它,但它似乎没有任何即时效果


我在手册页上搜索了一下,但没有找到任何关于它实际功能的有用信息,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