为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Visual Studio Code 中在保存时运行 `go fmt`?

如何在 Visual Studio Code 中在保存时运行 `go fmt`?

Go
qq_遁去的一_1 2021-11-22 18:22:58
如何使 Visual Studio Code(或 Go 编程语言扩展go fmt)在保存时运行(或其他工具/命令)?甚至自动保存?更新: 它现在在 VSCode 中完美运行;只需要在.vscode目录中添加一些配置文件(我使用这些)。2019 年更新: 这个问题很老了。现在,VSCode Go 扩展拥有你在 Go 中开发所需的一切。最后更新 2019 顺便说一句值得一提的是,在测试文件中的包声明的正上方出现了一个运行包测试。如果单击它,您可以看到您的代码的代码覆盖率。覆盖和未覆盖的部分以不同的颜色突出显示。2020 年更新 现在,VSCode 的 Go 扩展由 Go Team 监督!🎉
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

现在,该功能已经实现,您可以在保存时启用格式:

  1. 打开设置 ( Ctrl + ,)

  2. 搜索editor.formatOnSave并将其设置为true

您的 Go 代码将自动格式化 Ctrl + s


查看完整回答
反对 回复 2021-11-22
?
临摹微笑

TA贡献1982条经验 获得超2个赞

目前不可能,但正在处理https://github.com/Microsoft/vscode-go/issues/14


查看完整回答
反对 回复 2021-11-22
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

我对“go fmt”并不特别熟悉,但是您可以创建一个简单的 vscode 扩展来处理保存事件并执行任何将文件路径作为参数传递的任意命令。


这是一个仅调用的示例echo $filepath:


import * as vscode from 'vscode';

import {exec} from 'child_process';


export function activate(context: vscode.ExtensionContext) {


    vscode.window.showInformationMessage('Run command on save enabled.');


    var cmd = vscode.commands.registerCommand('extension.executeOnSave', () => {


        var onSave = vscode.workspace.onDidSaveTextDocument((e: vscode.TextDocument) => {


            // execute some child process on save

            var child = exec('echo ' + e.fileName);

            child.stdout.on('data', (data) => {

                vscode.window.showInformationMessage(data);

            });

        });

        context.subscriptions.push(onSave);

    });


    context.subscriptions.push(cmd);

}

和包文件:


{

    "name": "Custom onSave",

    "description": "Execute commands on save.",

    "version": "0.0.1",

    "publisher": "Emeraldwalk",

    "engines": {

        "vscode": "^0.10.1"

    },

    "categories": [

        "Other"

    ],

    "activationEvents": [

        "onCommand:extension.executeOnSave"

    ],

    "main": "./out/src/extension",

    "contributes": {

        "commands": [{

            "command": "extension.executeOnSave",

            "title": "Execute on Save"

        }]

    },

    "scripts": {

        "vscode:prepublish": "node ./node_modules/vscode/bin/compile",

        "compile": "node ./node_modules/vscode/bin/compile -watch -p ./"

    },

    "devDependencies": {

        "typescript": "^1.6.2",

        "vscode": "0.10.x"

    }

}

该扩展是通过 cmd+shift+p 启用的,然后键入“Execute on Save”,但它可以重新配置为通过另一个命令启动,包括“*”,这会导致它在 VSCode 加载时加载。


启用扩展后,只要保存文件,事件处理程序就会触发(注意:这在首次创建文件或另存为...时似乎不起作用)


这只是对这里概述的 yo 代码脚手架扩展的一个小修改:https : //code.visualstudio.com/docs/extensions/example-hello-world


更新


这是我为在文件保存时运行命令而编写的 Visual Studio Code 扩展。https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave。


查看完整回答
反对 回复 2021-11-22
  • 3 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信