compiler.nvim支持语言大揭秘:24种语言入口文件与默认输出对照表,让任何代码1分钟跑起来
【免费下载链接】compiler.nvimNeovim compiler for building and running your code without having to configure anything项目地址: https://gitcode.com/gh_mirrors/co/compiler.nvim
compiler.nvim 是一款专为 Neovim 打造的零配置编译器插件,它内置了 24 种编程语言的入口文件识别规则与默认输出路径,让你打开任意代码文件后一键编译运行——无需手写任何编译命令。本文带你完整拆解 compiler.nvim 支持的语言清单、每种语言的入口文件与默认输出对照表,以及 1 分钟快速上手指南。
🎯 什么是 compiler.nvim:零配置的 Neovim 编译器
compiler.nvim 的本质是一个"编译器任务调度器":它根据你当前编辑文件的文件类型(filetype),自动加载对应的语言后端,生成并执行编译/运行任务。
它的核心工作流非常简单:
- 你打开某个语言的文件(比如
main.go) - 触发命令
:CompilerOpen,弹出该语言的所有可选操作 - 选一个选项,compiler.nvim 自动查找入口文件、编译、并运行
四个核心命令(定义于lua/compiler/init.lua):
| 命令 | 作用 |
|---|---|
:CompilerOpen | 打开编译器选项菜单(基于 Telescope 界面) |
:CompilerToggleResults | 展开/收起编译结果输出窗口 |
:CompilerRedo | 重复上一次选择的编译操作 |
:CompilerStop | 停止所有正在运行的编译任务 |
语言后端的加载逻辑在lua/compiler/utils.lua的require_language函数中:它按"当前文件类型"去lua/compiler/languages/目录下寻找同名.lua文件,找到即支持。
📋 24种语言入口文件与默认输出对照表
这就是本文的核心——以下对照表全部提取自lua/compiler/languages/目录下各语言源文件的实际定义:
🔨 编译型语言:入口文件 → 可执行文件
| 语言 | 默认入口文件 | 默认输出 | 编译工具 |
|---|---|---|---|
| C | main.c | bin/program | gcc(-Wall -g) |
| C++ | main.cpp | bin/program | g++ |
| C# | Program.cs | bin/Program.exe | dotnet |
| Go | main.go | bin/program | go |
| Rust | main.rs | bin/program | rustc |
| Java | Main.java | bin/Main | javac + jar |
| Kotlin | Main.kt | bin/MainKt | kotlinc |
| Swift | main.swift | bin/program | swiftc |
| Dart | lib/main.dart | bin/main | dart compile |
| 汇编(Assembly) | main.asm | bin/program | 汇编器 + 链接器 |
| Zig | build.zig(需先zig init-exe) | zig build产物 | zig |
💡 规律一目了然:编译器系语言统一"从入口文件向上递归收集同后缀源文件 → 输出到
bin/目录",这个逻辑由lua/compiler/utils.lua中的find_files_to_compile函数统一实现。
🐍 解释型语言:入口文件 → 直接运行
| 语言 | 默认入口文件 | 运行方式 |
|---|---|---|
| Python | main.py | 解释执行;也可用 Nuitka 编译为机器码(输出bin/program)、PyInstaller 打包字节码 |
| JavaScript | src/index.js | node直接运行 |
| TypeScript | src/index.ts | 输出到dist/目录 |
| Lua | main.lua | lua直接运行 |
| Ruby | main.rb | ruby直接运行 |
| Perl | main.pl | perl直接运行 |
| R | main.r | R 脚本直接运行 |
| Elixir | 当前文件 /mix.exs | elixir单文件运行或mix run |
Python 是全家桶最"豪华"的成员:lua/compiler/languages/python.lua 提供了解释执行、机器码编译、字节码打包、REPL 共 12 个操作选项。
🏗️ 框架驱动型语言:交给项目构建工具
| 语言 | 项目文件 | 运行方式 |
|---|---|---|
| F#(Fsharp) | .fsproj项目 | dotnet run |
| Visual Basic | Program.vbproj | dotnet run/dotnet build |
| Gleam | gleam.toml | gleam build+gleam run |
| Fortran | 当前文件 /fpm.toml | gfortran单文件编译(输出到 cache 目录的program)或fpm build/run |
另外,lua/compiler/languages/下还有第 25 个文件make.lua——当你正在编辑 Makefile 时,可以直接运行make -f ./Makefile,方便在编译过程中调整构建规则。
🔍 想改入口文件名?一个 .solution.toml 搞定
如果你项目的入口不叫main.c或Main.java,不必改源码。compiler.nvim 支持在项目根目录放置.solution.toml(或.solution)配置文件,按"入口段"声明多个程序:
entry_point:指定真正的入口文件output:指定自定义输出路径arguments:覆盖默认编译参数executable:登记需要在构建后执行的产物
解析逻辑位于lua/compiler/utils.lua的parse_solution_file函数。配置好之后,每个入口文件会在并行构建,适合多模块项目。
🏭 bau:5种主流构建系统的开箱集成
除了语言本身,compiler.nvim 还内置了构建系统后端,位于lua/compiler/bau/目录:
cmake.lua—— CMake 项目gradle.lua—— Gradle / Java 项目make.lua—— Make 构建meson.lua—— Meson 构建nodejs.lua—— Node.js 项目(npm 脚本)
这意味着 CMake、Gradle 这类项目同样可以一键构建,无需手动敲cmake --build。
⚡ 1分钟上手:从打开到运行的3个步骤
第一步:安装 overseer.nvim(依赖)与 compiler.nvim,并注册:
require("compiler").setup()第二步:打开任意受支持语言的文件,比如一个main.go。
第三步:执行:CompilerOpen,在弹出菜单中选择操作,例如 Go 语言的 "Build and run program"。
几秒后,编译输出会自动显示在结果窗口中——从打开文件到看到运行结果,1 分钟绰绰有余。
❓ 新手常见疑问
Q:入口文件名必须是 main.xxx 吗?A:默认如此(见上文对照表),但可以用.solution.toml自定义任意入口。
Q:Windows 能用吗?A:可以。路径处理由lua/compiler/utils.lua的os_path函数自动适配 Windows / Unix 分隔符,文件搜索在 Windows 下改用 PowerShell 实现。
Q:我的语言不在 24 种清单里?A:参考lua/compiler/languages/下任意一个文件的"前端 options + 后端 action"结构,写一个同名文件即可扩展新语言,这也是该项目对贡献者最友好的地方。
Q:支持哪些语言?A:C、C++、C#、Go、Rust、Java、Kotlin、Swift、Dart、汇编、Zig、Fortran、F#、Visual Basic、Gleam、Python、JavaScript、TypeScript、Lua、Ruby、Perl、R、Elixir,外加 Makefile 与 5 种构建系统(CMake / Gradle / Make / Meson / Node.js)。
【免费下载链接】compiler.nvimNeovim compiler for building and running your code without having to configure anything项目地址: https://gitcode.com/gh_mirrors/co/compiler.nvim
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考