从vim编译代码


18

新来vim和我希望能够从内部编译代码vim,而无需运行新的终端并调用编译器。

我该怎么做呢?请注意,此要求不仅限于此gcc,有时我还需要python在正在使用的当前脚本上进行调用,因此您可以了解...

Answers:


25

编写一个Makefile,您可以简单地:

:make

从vim内部。如果编译失败:

:copen

将显示警告和错误。选择它们将带您到适当的文件和行。



6

如果由于某种原因不喜欢makefile,可以使用:!调用任何命令。

例如,您可以使用“:!javac * .java && java Foo”来编译并运行一个简单的Java程序。您也可以通过这种方式调用其他构建系统(scons,cmake等)。


3

试用Vim 的quickrun插件。该页面包含指向github的链接,该链接是最新版本,也是我使用的版本。

使用此插件相对于doing的优势是:!,命令的输出将被收集并显示在拆分窗口中。

另外,默认情况下,当您要求插件执行命令时,该插件将挂起您的vim实例,但是可以将其配置为异步运行该命令,这就是我要做的。阅读文档以获取更多详细信息。


3

我使用一个已编译了Python解释器的vim。

我提供具有此功能的python文件:

def pyterm(filename="", interactive=1):
    cmd = "%s %s %s " % (PYTHON, "-i" if interactive else "", filename)
    if "DISPLAY" in os.environ:
        return run_config(os.environ.get("XTERM"), cmd)
    else:
        return os.system(cmd)

并将其映射到键盘快捷键:

nmap ;ru :update<CR>:python pyterm(vim.current.buffer.name, 0)<CR>
nmap ;ri :update<CR>:python pyterm(vim.current.buffer.name, 1)<CR>

我以前设置了一些环境变量来确定要使用gvim的确切终端,或者如果不在X中则在同一终端中运行。

然后,我通常只需在Python缓冲区中键入“; ri”即可运行它(通常是对其进行测试)。


2

Vim可用于在当前文件上使用gnu make进行编译-即使该文件没有Makefile(有关更多详细信息,请参见此处):

:make %:r

这样,vim可让您访问编译器()列表中的quickfix错误反馈:help quickfix- :cn下一个错误,:cp上一个错误,:cw新窗口列出的错误。

如果您还没有gnu make,那么可以设置makeprg变量(如果您正在编译C ++,请更改为g ++):

:se makeprg=gcc\ -o\ %<\ %

然后用VIM make命令来编译当前文件并获得的quickfix vim的错误列表:

:make

编辑:如果您还想从vim中运行已编译的可执行文件,则可以执行('!'执行,'%:r'是不带后缀的文件名):

:!./%:r

1

如果是gcc,python等,则可以用冒号(:!)来称呼它

例如。 :!python something.py


0
!gcc file.c && ./a.out

这将编译您的C文件,并运行可执行文件,要求在vim窗口中全部输入。


1
更完整的答案应包括“:”,并使其更通用,您可以更改当前文件操作符“%”的“ :!gcc % && ./a.out
file.c

我在做类似的事情.vimrc,我映射Command + Shift + R到:map <D-R> :exe '!gcc %:p' <bar> exe '!'.getcwd().'/a.out'<cr>
f1lt3r '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.