compiler.nvim支持语言大揭秘:24种语言入口文件与默认输出对照表,让任何代码1分钟跑起来
2026/8/23 14:38:27 网站建设 项目流程

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),自动加载对应的语言后端,生成并执行编译/运行任务。

它的核心工作流非常简单:

  1. 你打开某个语言的文件(比如main.go
  2. 触发命令:CompilerOpen,弹出该语言的所有可选操作
  3. 选一个选项,compiler.nvim 自动查找入口文件、编译、并运行

四个核心命令(定义于lua/compiler/init.lua):

命令作用
:CompilerOpen打开编译器选项菜单(基于 Telescope 界面)
:CompilerToggleResults展开/收起编译结果输出窗口
:CompilerRedo重复上一次选择的编译操作
:CompilerStop停止所有正在运行的编译任务

语言后端的加载逻辑在lua/compiler/utils.luarequire_language函数中:它按"当前文件类型"去lua/compiler/languages/目录下寻找同名.lua文件,找到即支持。

📋 24种语言入口文件与默认输出对照表

这就是本文的核心——以下对照表全部提取自lua/compiler/languages/目录下各语言源文件的实际定义:

🔨 编译型语言:入口文件 → 可执行文件

语言默认入口文件默认输出编译工具
Cmain.cbin/programgcc(-Wall -g
C++main.cppbin/programg++
C#Program.csbin/Program.exedotnet
Gomain.gobin/programgo
Rustmain.rsbin/programrustc
JavaMain.javabin/Mainjavac + jar
KotlinMain.ktbin/MainKtkotlinc
Swiftmain.swiftbin/programswiftc
Dartlib/main.dartbin/maindart compile
汇编(Assembly)main.asmbin/program汇编器 + 链接器
Zigbuild.zig(需先zig init-exezig build产物zig

💡 规律一目了然:编译器系语言统一"从入口文件向上递归收集同后缀源文件 → 输出到bin/目录",这个逻辑由lua/compiler/utils.lua中的find_files_to_compile函数统一实现。

🐍 解释型语言:入口文件 → 直接运行

语言默认入口文件运行方式
Pythonmain.py解释执行;也可用 Nuitka 编译为机器码(输出bin/program)、PyInstaller 打包字节码
JavaScriptsrc/index.jsnode直接运行
TypeScriptsrc/index.ts输出到dist/目录
Luamain.lualua直接运行
Rubymain.rbruby直接运行
Perlmain.plperl直接运行
Rmain.rR 脚本直接运行
Elixir当前文件 /mix.exselixir单文件运行或mix run

Python 是全家桶最"豪华"的成员:lua/compiler/languages/python.lua 提供了解释执行、机器码编译、字节码打包、REPL 共 12 个操作选项。

🏗️ 框架驱动型语言:交给项目构建工具

语言项目文件运行方式
F#(Fsharp).fsproj项目dotnet run
Visual BasicProgram.vbprojdotnet run/dotnet build
Gleamgleam.tomlgleam build+gleam run
Fortran当前文件 /fpm.tomlgfortran单文件编译(输出到 cache 目录的program)或fpm build/run

另外,lua/compiler/languages/下还有第 25 个文件make.lua——当你正在编辑 Makefile 时,可以直接运行make -f ./Makefile,方便在编译过程中调整构建规则。

🔍 想改入口文件名?一个 .solution.toml 搞定

如果你项目的入口不叫main.cMain.java,不必改源码。compiler.nvim 支持在项目根目录放置.solution.toml(或.solution)配置文件,按"入口段"声明多个程序:

  • entry_point:指定真正的入口文件
  • output:指定自定义输出路径
  • arguments:覆盖默认编译参数
  • executable:登记需要在构建后执行的产物

解析逻辑位于lua/compiler/utils.luaparse_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.luaos_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询