商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Sublime配置Kotlin脚本运行环境_Sublime编写Kotlin程序设置

Sublime配置Kotlin脚本运行环境_Sublime编写Kotlin程序设置

  发布于2026-07-11 阅读(0)

扫一扫,手机访问

Sublime Text 本身不直接支持运行 Kotlin 脚本(.kts),这确实是个小遗憾。抱歉,必须借助外部工具——通过 kotlinc-jvmkotlin 命令配合 Build System 来实现。不过这里有个关键点:新版 Kotlin(≥1.9)已经弃用了 kotlinc 的脚本模式,kotlin 命令才是专门为 .kts 设计的解释器。很多人卡在这个地方,就是因为用错了命令。

确认系统已装对命令:kotlin 而非 kotlinc

最常见的误区是以为 kotlinc 能跑 .kts 文件。实际上,kotlinc 只编译 .kt 文件。真正用于脚本的是独立的 kotlin 可执行文件(随 Kotlin CLI 一起安装,不是别名或软链)。那到底该怎么做呢?

  • 在终端执行 kotlin -version,必须要有输出(比如 Kotlin version 1.9.24)。如果报 command not found,说明没装完整版 Kotlin CLI,或者 PATH 没有包含其 bin/ 目录。
  • kotlinc -versionkotlin -version 都应该可用,但用途完全不同:kotlinc 编译 .kt 生成 .jarkotlin 则直接执行 .kts
  • 需要警惕的是,通过 Homebrew 安装的 kotlinbrew install kotlin)常常缺少 kotlin 命令,只带 kotlinc。更稳妥的做法是从 GitHub Releases 下载官方 ZIP 包并手动配置 PATH。

Build System 必须用 shell_cmd 调 kotlin,且路径不能含空格或中文

Sublime 默认调用 CMD(Windows)或 sh(macOS/Linux),而 kotlin 脚本对路径很敏感。尤其 Windows 下,空格和中文会直接中断执行。这里有几点需要注意:

  • .kts 文件放在纯英文、无空格的路径下,例如 D:\kthello.kts~/dev/kt/hello.kts
  • Build System 配置中必须用 shell_cmd(而不是 cmd),否则 &&、引号等 shell 特性无法生效。
  • Windows 用户如果使用 PowerShell,需要显式加上 pwsh -c 前缀。更稳妥的做法是改用 cmd /c 并确保用双引号包裹路径:"shell_cmd": "cmd /c \"kotlin \\\"$file\\\"\""
  • macOS/Linux 用户要注意 shell 类型。Sublime 默认用 sh,但某些 kotlin 脚本依赖 bash 特性,可以改写为 bash -c "kotlin '$file'"

.kts 文件里不能写 fun main(),得用顶层表达式或 @file:JvmName

Kotlin 脚本(.kts)和普通 Kotlin 源码有本质区别:它默认执行文件内的顶层代码,不走 main 入口。强行写 fun main() 不会报错,但也不会执行——这是另一个常见的陷阱。

  • 正确的写法是直接写可执行语句,比如:println("Hello from .kts!")
  • 如果想复用 .kt 里的 main 函数逻辑,可以用 @file:JvmName("ScriptMain") + fun main(),但必须配合 -J-Dkotlin.scripting.enableExperimental=true 启动参数,并且在 Sublime Build System 中显式加上。
  • 常见的错误现象:Build 成功但无输出——大概率是写了 fun main() 却没触发,或者脚本里用了未声明的变量(.kts 不会自动导入 kotlin.io.* 等)。

编码与 JVM 参数容易被忽略,尤其中文输出乱码

即使 kotlin 命令能跑通,中文字符串打印成 ??? 或者抛 ja va.nio.charset.MalformedInputException 也是高频问题。根源在于 JVM 默认编码不是 UTF-8。

  • Windows CMD 默认编码是 GBK,kotlin 进程会继承这个编码,导致读取 UTF-8 编码的 .kts 文件失败。
  • 解决方法是在 Build System 的 shell_cmd 中显式指定 JVM 参数:kotlin -J-Dfile.encoding=UTF-8 "$file"
  • macOS/Linux 用户如果使用 zsh/bash,还需要确认终端 locale 输出包含 UTF-8,否则 kotlin 可能仍然按 locale 解码源文件。
  • 额外提示:不要在 Build System 里混用 kotlinckotlin 命令逻辑,比如先 kotlinc -scriptja va。新版已经不支持 -script 参数了。

Sublime配置Kotlin脚本运行环境_Sublime编写Kotlin程序设置

最容易被忽略的,其实是 .kts.kt 的根本差异:前者是脚本,后者是编译单元。在 Sublime 里,一个 Build System 无法同时正确处理两者。必须分开建两个文件(KotlinScript.sublime-buildKotlin.sublime-build),并且 selector 分别设为 source.kotlin.scriptsource.kotlin。否则,插件识别不准时,连语法高亮都会错位。

本文转载于:https://www.php.cn/faq/2380174.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注