发布于2026-07-11 阅读(0)
扫一扫,手机访问
Sublime Text 本身不直接支持运行 Kotlin 脚本(.kts),这确实是个小遗憾。抱歉,必须借助外部工具——通过 kotlinc-jvm 或 kotlin 命令配合 Build System 来实现。不过这里有个关键点:新版 Kotlin(≥1.9)已经弃用了 kotlinc 的脚本模式,kotlin 命令才是专门为 .kts 设计的解释器。很多人卡在这个地方,就是因为用错了命令。
最常见的误区是以为 kotlinc 能跑 .kts 文件。实际上,kotlinc 只编译 .kt 文件。真正用于脚本的是独立的 kotlin 可执行文件(随 Kotlin CLI 一起安装,不是别名或软链)。那到底该怎么做呢?
kotlin -version,必须要有输出(比如 Kotlin version 1.9.24)。如果报 command not found,说明没装完整版 Kotlin CLI,或者 PATH 没有包含其 bin/ 目录。kotlinc -version 和 kotlin -version 都应该可用,但用途完全不同:kotlinc 编译 .kt 生成 .jar,kotlin 则直接执行 .kts。kotlin(brew install kotlin)常常缺少 kotlin 命令,只带 kotlinc。更稳妥的做法是从 GitHub Releases 下载官方 ZIP 包并手动配置 PATH。Sublime 默认调用 CMD(Windows)或 sh(macOS/Linux),而 kotlin 脚本对路径很敏感。尤其 Windows 下,空格和中文会直接中断执行。这里有几点需要注意:
.kts 文件放在纯英文、无空格的路径下,例如 D:\kthello.kts 或 ~/dev/kt/hello.kts。shell_cmd(而不是 cmd),否则 &&、引号等 shell 特性无法生效。pwsh -c 前缀。更稳妥的做法是改用 cmd /c 并确保用双引号包裹路径:"shell_cmd": "cmd /c \"kotlin \\\"$file\\\"\""。sh,但某些 kotlin 脚本依赖 bash 特性,可以改写为 bash -c "kotlin '$file'"。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 中显式加上。fun main() 却没触发,或者脚本里用了未声明的变量(.kts 不会自动导入 kotlin.io.* 等)。即使 kotlin 命令能跑通,中文字符串打印成 ??? 或者抛 ja va.nio.charset.MalformedInputException 也是高频问题。根源在于 JVM 默认编码不是 UTF-8。
kotlin 进程会继承这个编码,导致读取 UTF-8 编码的 .kts 文件失败。shell_cmd 中显式指定 JVM 参数:kotlin -J-Dfile.encoding=UTF-8 "$file"。locale 输出包含 UTF-8,否则 kotlin 可能仍然按 locale 解码源文件。kotlinc 和 kotlin 命令逻辑,比如先 kotlinc -script 再 ja va。新版已经不支持 -script 参数了。
最容易被忽略的,其实是 .kts 和 .kt 的根本差异:前者是脚本,后者是编译单元。在 Sublime 里,一个 Build System 无法同时正确处理两者。必须分开建两个文件(KotlinScript.sublime-build 和 Kotlin.sublime-build),并且 selector 分别设为 source.kotlin.script 和 source.kotlin。否则,插件识别不准时,连语法高亮都会错位。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8