Rustlings 如何用 --edit-cmd 和 --no-editor 自定义练习文件的打开方式【免费下载链接】rustlings:crab: Small exercises to get you used to reading and writing Rust code!项目地址: https://gitcode.com/gh_mirrors/ru/rustlingsRustlings 在 watch mode直接运行rustlings进入的默认模式下会自动打开当前练习文件在 VS Code 终端中它会调用code或codium在 Zellij 中它会用$EDITOR在新 pane 里打开文件见 CHANGELOG.md 的 Unreleased 条目。如果你不想要自动打开或者想换成自己指定的命令可以使用两个全局参数--edit-cmd和--no-editor。这篇文章基于仓库源码中的参数定义src/cli.rs和编辑器实现src/editor.rs说明这两个参数怎么配、怎么生效、以及失败时如何判断。前提条件已按 使用文档 完成初始化当前目录下存在exercises/目录否则运行rustlings只会提示运行rustlings init见 src/main.rs。交互式终端没有 TTY 时 watch mode 会以Unsupported or missing terminal/TTY报错退出src/main.rs。版本注意--edit-cmd与--no-editor在 CHANGELOG.md 中列于Unreleased小节最近的正式发布是 6.5.0。因此需要用包含这两个参数的构建运行。可以先用rustlings --help确认输出里是否列出了--no-editor和--edit-cmd没有的话说明当前版本不包含这两个选项。默认打开行为的判断顺序Editor::new的实现src/editor.rs按以下顺序决定用什么打开练习文件VS Code 终端环境变量TERM_PROGRAMvscode依次探测code、codium通过程序 --version判断是否可用可用则直接用它打开--edit-cmd在此环境下被忽略参数文档明确写明 --edit-cmdis ignored in VS Code。--edit-cmd指定了自定义命令时用它打开。Zellij 环境存在ZELLIJ环境变量且zellij命令可用自动用zellij action edit在新 pane 中打开。以上都不满足不自动打开任何编辑器。这个顺序也意味着在 Zellij 中指定--edit-cmd会覆盖自动 pane 行为而在 VS Code 终端里指定--edit-cmd无效。完全禁用自动打开--no-editor当你在 VS Code 或 Zellij 里运行 Rustlings、但不希望它替你打开文件比如你自己已经打开了编辑器时启动 watch mode 时加上--no-editorrustlings --no-editor根据 src/cli.rs 的参数文档它的作用是 Disable automatic opening of the current file in VS Code or Zellij并且优先级最高同时传了--edit-cmd时--edit-cmd被忽略。这些是主命令的全局参数应放在任何子命令之前。指定自定义打开命令--edit-cmd--edit-cmd让 Rustlings 通过EDIT_CMD EXERCISE_PATH的形式打开当前练习见 src/cli.rs 的参数文档。使用规则Rustlings 会把当前练习文件的路径作为最后一个参数追加到你提供的命令后面命令不允许阻塞文档给出的反例是vim它应该是与另一个进程中的编辑器通信的命令例如把文件投递给已经运行的编辑器实例值中可以直接包含参数文档示例--edit-cmd PROGRAM -x --arg1其中PROGRAM是你实际的编辑器程序名文档给出的默认行为示例是--edit-cmd code。示例code替换为你自己的编辑器启动命令路径由 Rustlings 自动追加不需要你写# 用 code 打开VS Code 终端里的默认行为 rustlings --edit-cmd code # 带额外参数的形式PROGRAM 换成你的程序名-x --arg1 是其参数 rustlings --edit-cmd PROGRAM -x --arg1命令执行细节在 src/editor.rs命令在独立线程中运行练习文件路径作为最后一个参数传入执行 Zellij 分支时切换练习会先关闭上一个练习的 pane再通过zellij action edit 练习路径打开新 pane。验证是否生效仓库文档没有给出固定的成功输出可以按源码中的行为来判断--edit-cmd配置正确启动rustlings或切换当前练习后目标编辑器里出现当前练习文件Rustlings 终端中没有编辑器相关报错。--edit-cmd配置错误命令无法解析或退出码非 0 时Rustlings 会直接报错且错误信息里包含该命令的 stdout 和 stderrsrc/editor.rs据此可以定位是命令写错、引号不配对还是编辑器本身报错。已知的报错文案包括Program missing in--edit-cmd命令里没有程序名Failed to parse the command in--edit-cmd命令字符串解析失败通常是引号问题The command ... didnt run successfully命令执行了但退出码非 0附 stdout/stderr。--no-editor生效启动后切换练习不再触发任何编辑器进程也没有Failed to spawn a thread to open the editor之类的报错src/editor.rs。限制这两个参数只控制打开当前练习文件这一件事不影响练习的编译、测试和状态记录。--edit-cmd在TERM_PROGRAMvscode的终端中无效vim这类阻塞式编辑器不适合作为EDIT_CMD参数文档的明确要求。文件变更检测失败时另有--manual-run参数在 watch mode 里输入r手动重跑与编辑器打开方式无关这里不涉及。【免费下载链接】rustlings:crab: Small exercises to get you used to reading and writing Rust code!项目地址: https://gitcode.com/gh_mirrors/ru/rustlings创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考