首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文件保存时从vscode扩展名自动运行命令

在文件保存时从vscode扩展名自动运行命令
EN

Stack Overflow用户
提问于 2021-06-20 20:28:18
回答 4查看 13.8K关注 0票数 12

我可以在VS代码中保存文件时自动执行两个单独的命令吗?

我希望这两个命令执行以下操作:

1.格式化焦点中的文档

2.对导入的文档进行排序

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-06-20 20:38:40

对在保存(onSave)上运行任务或命令没有默认支持。然而,有第三方支持通过VSCode扩展“运行在保存”

下面是链接:https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave

这是一个非常流行的扩展,我偶尔会使用它,它在我的用例中运行得很好。

此外,如果您只想链接,或格式化代码,在保存,这可以通过VSCode设置。

编辑6月20日9:04

如果要将该命令添加到您的设置中,则必须配置扩展,扩展README.md中对此进行了解释,可以通过单击VSCode扩展资源管理器中的扩展图标来查看该扩展。

配置

将"emeraldwalk.runonsave“配置添加到用户或工作区设置中。

  • " shell“-(可选)shell路径与运行命令的child_process.exec选项一起使用。
  • "autoClearConsole“-(可选)每次命令运行时清除VSCode输出控制台。默认为false。
  • “命令”-每当保存文件时将运行的命令数组。
    • “匹配”-用于匹配要在哪些文件上运行命令的正则表达式。

注意,因为这是一个Regex,而且在JSON字符串中,反斜杠必须双转义,比如targetting文件夹。例如“匹配”:“一些\\文件夹\\.*”

代码语言:javascript
运行
复制
- "cmd" - command to run. Can include parameters that will be replaced at runtime (see Placeholder Tokens section below).
- "isAsync" (optional) - defaults to false. If true, next command will be run before this one finishes.

样本Config

此示例配置将运行echo语句,包括保存的文件路径。在这个示例中,第一个命令是异步的,所以即使第一个命令尚未完成,第二个命令也会立即执行。由于第二个命令不是异步的,所以第三个命令在第二个命令完成之前不会执行。

代码语言:javascript
运行
复制
"emeraldwalk.runonsave": {
    "commands": [
        {
            "match": ".*",
            "isAsync": true,
            "cmd": "echo 'I run for all files.'"
        },
        {
            "match": "\\.txt$",
            "cmd": "echo 'I am a .txt file ${file}.'"
        },
        {
            "match": "\\.js$",
            "cmd": "echo 'I am a .js file ${file}.'"
        },
        {
            "match": ".*",
            "cmd": "echo 'I am ${env.USERNAME}.'"
        }
    ]
}

在保存时配置要执行的命令不会像点击F1来打开快速输入和查找要运行的扩展任务那样简单。你必须遵循说明,当你陷入困境时,你可能会回来问一个关于你正在经历的问题的问题,或者谷歌它;如果你是一个Linux用户,或者你有很多MS或Powershell体验,这将是非常直接的。

票数 15
EN

Stack Overflow用户

发布于 2021-06-21 17:02:56

正如我在评论中指出的,有许多“在保存上运行”扩展。这里有一个将运行外部命令的命令,比如来自扩展名的命令。而且,它似乎比一些国家更新、更好地加以维护。

在上面运行

样本设置:

代码语言:javascript
运行
复制
"runItOn": {
    "commands": [
        {
            "match": ".*",
            "isShellCommand" : false,
            "cmd": "myExtension.amazingCommand"
        },
        {
            "match": "\\.txt$",
            "cmd": "echo 'Executed in the terminal: I am a .txt file ${file}.'"
        }
    ],
    "watchers": [
        {
            "match": "**/*.js",
            "cmd": "echo 'Changes detected on js files.'"
        }
    ]
}

myExtension.amazingCommand是你要找的东西。

票数 3
EN

Stack Overflow用户

发布于 2021-11-24 11:59:07

如果只需要格式化代码,请检查激活的本机编辑器设置,而不是安装RunOnSave。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68059778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档