Learn Vim 第十九章:编译

Learn Vim 第十九章:编译

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

Vim 通过 `:make` 命令编译代码,可自定义 `makeprg` 选项或使用 `:compiler` 切换编译器。错误信息存入 quickfix 窗口,支持自动保存。异步编译可通过插件如 vim-dispatch 实现,提升效率。Vim 的扩展性使其功能强大。

🔎

延伸解读

makeprg 与 % 符号的灵活运用

Vim 的 :make 命令默认执行 make,但通过设置 makeprg 选项,可以将其指向任意编译命令。例如,:set makeprg=g++\ %\ -o\ %< 中,% 代表当前文件名,%< 代表去掉扩展名的文件名。这种机制让 Vim 能适应不同项目的构建需求,无需离开编辑器即可编译。

quickfix 窗口:错误管理的关键

当 :make 执行失败时,Vim 会将错误信息存入 quickfix 列表。通过 :copen 打开 quickfix 窗口,可以快速定位和浏览错误。这一功能不仅限于编译,也适用于其他外部命令,是 Vim 高效处理错误的核心机制。

异步编译:提升效率的插件方案

对于耗时较长的编译任务,Vim 内置的 :make 会阻塞界面。文章推荐使用 vim-dispatch 或 asyncrun.vim 插件实现异步编译。例如,vim-dispatch 的 :Make 命令与 :make 类似,但不会阻塞,允许在编译期间继续编辑,显著提升工作流效率。

自定义编译器与自动化的结合

通过 :compiler 命令或创建自定义编译器脚本,可以快速切换不同语言的编译环境。结合 autocmd 实现保存时自动编译,或利用 vim-dispatch 的自动调度功能,根据文件类型自动执行相应命令,实现高度自动化的编译流程。

Q&A

如何在 Vim 中编译 C++ 程序?

可以使用 :!g++ hello.cpp -o hello 命令从 Vim 内部编译,或者使用 :make 命令运行 makefile。

Vim 的 :make 命令有什么作用?

:make 命令会在当前目录查找 makefile 并执行它,同时可以传递参数,如 :make foo。如果编译出错,错误信息会存储在 quickfix 窗口中,可以用 :copen 查看。

如何自定义 Vim 的编译命令?

可以通过设置 'makeprg' 选项来自定义编译命令,例如 :set makeprg=g++\ %\ -o\ %<,其中 % 代表当前文件名,%< 代表去掉扩展名的文件名。

如何在 Vim 中切换不同的编译器?

使用 :compiler 命令可以快速切换编译器,例如 :compiler ruby 会执行相应的编译器脚本并设置 makeprg。

如何创建自定义编译器配置?

可以在 ~/.vim/compiler/ 目录下创建脚本,例如 typescript.vim,使用 CompilerSet 设置 makeprg 和 errorformat。

如何在 Vim 中实现异步编译?

可以使用插件如 vim-dispatch 或 asyncrun.vim 来实现异步编译。vim-dispatch 提供 :Make 命令,可以异步运行 make,还有 :Dispatch 命令运行任意外部命令。

如何设置保存文件时自动编译?

可以使用自动命令,例如 :autocmd BufWritePost *.cpp make,这样每次保存 .cpp 文件时都会自动运行 :make。

🏷️

标签

➡️

继续阅读