如何使用Visual Studio代码(或Go编程语言扩展)在保存时运行go fmt
(或其他工具/命令)?甚至自动保存?
更新 它现在完全在VSCode内部工作,此时;只需要在 .vscode 目录中添加一些配置文件(我使用these)。
答案 0 :(得分:8)
答案 1 :(得分:5)
现在,该功能已实现,您可以在保存时启用格式:
Ctrl + ,
)editor.formatOnSave
并设置为true
You Go代码将在Ctrl + s
上自动格式化
答案 2 :(得分:2)
我不熟悉' go fmt'具体来说,你可以创建一个简单的vscode扩展来处理save事件并执行任何传递文件路径作为参数的任意命令。
这是一个只调用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启用扩展,然后键入"执行保存"但可以重新配置以通过另一个命令启动,包括" *"这将导致它在VSCode加载的任何时候加载。
启用扩展程序后,只要保存文件,事件处理程序就会触发(注意:在首次创建文件时,或者在另存为...时,这似乎不起作用)
这只是对yo code scaffolded extension的一个小修改,如下所述:https://code.visualstudio.com/docs/extensions/example-hello-world
<强>更新强>
这是我为在文件保存上运行命令而编写的Visual Studio代码扩展。 https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave