Skip to content

Latest commit

 

History

History
161 lines (111 loc) · 5.9 KB

README_CN.md

File metadata and controls

161 lines (111 loc) · 5.9 KB

Important

此插件不能开箱即用,且目前不处于积极维护状态。配置可能会有所变化,详见 v2计划

IO Runner WIP⚠️

Visual Studio Marketplace Version

简化 VSCode 下的单文件代码执行。

  • 快速执行单文件代码
  • 重定向输入输出到独立视图。
  • 执行 launch.json 中的启动项和 tasks.json 中的任务
  • 在配置中支持 VSCode 的配置变量。(通过使用 connor4312/vscode-variables,并非完整实现。VSCode 本身不支持)。
  • 根据文件扩展名自动选择启动配置,为每个文件保持独立的上下文环境(非持久化存储)。
  • 通过 CSS 变量,自动适配 VSCode 的任意主题,更加与原生协调
  • more...

此扩展可能还存在以下问题有待解决:

  • 由于执行 VSCode 的原生任务,这比直接运行命令要慢的多
    • 可能选择通过解析 task 配置手动执行
  • 引入了 CodeMirror 作为编辑器,但是似乎是不必要的
    • 可能通过 textarea 模拟部分特性即可,但是对于大文本需要引入虚拟视图/行号机制
    • 祈求 VSCode 提供 Webview 使用原生编辑器的特性
  • 文件执行的暂停机制不够优雅

配置说明

目前,此扩展并不是开箱即用的。它依赖于 launch.json 中的配置和 tasks.json 中指定的任务。

io-runner.launchMap

映射文件后缀和启动配置名称,例如:

"io-runner.launchMap": {
    "c": [ "(lldb) Launch" ],
    "cpp": [ "(lldb) Launch" ]
}

io-runner.launchInterpreter

对于解释型语言,映射启动项的类型(type)与解释器,例如:

"io-runner.launchInterpreter": {
    "python": "python3",
    "node": "node",
}

io-runner.defaultEncoding

输入输出的默认编码。如果你使用的是非英语的 Windows 系统,你可能需要将其设置为对应系统语言的编码,以显示正确的语言字符。

例如,简体中文用户可能需要将其设置为 gbk 。日语用户可能需要将其设置为 shift_jis

可以设置的值及其说明可以在设置(UI)中直接选择。你也可以查看 TextDecoder: encoding propertypackage.json 获得更详细的内容。

io-runner.timeout

程序运行的最大时间。如果程序在指定的时间内没有完成,它将被强制终止。

单位:毫秒

默认值: 10000 (10 秒)

实例

为了更好的使用体验,最好在 tasks.json 的对应任务中,将 presentation 中的 reveal 设置为 slient

     "presentation": {
        "reveal": "never"
      },

编译型语言

对于编译型语言,以 C/C++ 为例。如果你有如下启动配置:

{
    "type": "lldb",
    "request": "launch",
    "name": "(lldb) Launch", // 这里的 name 的值对应后面 launchMap 的值
    "preLaunchTask": "buildG++",
    "postDebugTask": "removeDevFolder",
    "program": "${fileDirname}/.dev/${fileBasenameNoExtension}.out",
    "args": [],
    "cwd": "${fileDirname}",
}

你需要在 io-runner.launchMap 中添加:

"io-runner.launchMap": {
    "c": [ "(lldb) Launch" ],
    "cpp": [ "(lldb) Launch" ]
}

当你在 C/C++ 文件中打开 IO Runner 面板时,你可以选择 (lldb) Launch 来启动进程。此时,扩展会自动执行 buildG++ 任务(preLaunchTask),然后运行 program 字段中指定的输出文件。最后,它会执行 removeDevFolder 任务(postDebugTask)。

解释型语言

对于需要解释器的语言,例如 Python,你在 launch.json 中有如下项:

{
    "type": "python", // 这里的 type 的值是后面解释器的键值
    "request": "launch",
    "name": "Python: Current File",
    "program": "${file}",
    "console": "integratedTerminal"
}

你仍需要在 io-runner.launchMap 中配置:

"io-runner.launchMap": {
    "py": [ "Python: Current File" ],
}

同时,还需要在 io-runner.launchInterpreter 中配置与 type 项相符的解释器命令,例如:

"io-runner.launchInterpreter": {
    "python": "python3",
}

那么在 Python 文件中,打开了 IO Runner 面板,你就可以选择 Python: Current File 进行启动。扩展会自动执行 python3 命令,运行当前文件。

命令

  • io-runner.run - 执行当前文件
  • io-runner.stop - 停止当前执行
  • io-runner.panel.focus - 聚焦 IO Runner 面板

可以通过绑定快捷键增加执行效率。

致谢

此项目大程度地受到 CmdBlockZQGOI Runner 启发。

一些组件和 design token 来自 vscode-webview-ui-toolkit,以保持与 VSCode 界面的一致性。

我采用 microsoft/fast 开发前端界面。因为它设计轻量,且与 vscode-webview-ui-toolkit 的组件无缝集成。

License

MIT License © 2023 maxchang3

This project is initialized by using the template starter-vscode.