我想要一个命令来编译和执行我在vim中编辑的C文件。我该怎么做?以下内容不起作用,因为文件名中有.c。
:map <leader>m :!make && ./%
如果我使用:!make && ./filename
,我不知道如何在输出中移动,所以我也想看到一个具有垂直拆分窗口的解决方案。
:map <leader>m :!make && ./%
中的shell转义调用make程序,该程序搜索要处理的Makefile。Makefile中的配方描述了如何编译程序,以及如何命名最终可执行文件(如果省略,则默认为a.out
)。虽然您正在编辑的文件名(由%
引用)可能与您想要的可执行文件名具有相同的前缀,但这并不能保证。
要在拆分窗口中编译、运行和编辑程序的输出,请编写编译后自动运行的Makefile配方,并将可执行文件的输出重定向到临时文件中,例如:
.PHONY: all
all: executablename runlog
executablename: executablename.c
cc -o executablename executablename.c
runlog: executablename
./executablename >runlog
请记住,需要将8个缩进空间替换为一个选项卡才能使Makefile发挥作用。
在映射中引用临时文件::map <leader>m :!make^M:sp runlog^M
,其中^M
源于键入Ctrl+Return。