我不特别熟悉“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 然后键入“保存时执行”启用的,但它可以重新配置为通过包括“*”在内的另一个命令启动,这将导致它在 VSCode 加载时加载。
启用扩展后,只要保存文件,事件处理程序就会触发(注意:这在第一次创建文件或另存为时似乎不起作用...)
这只是对 yo 代码脚手架扩展的小修改,如下所述:https://code.visualstudio.com/docs/extensions/example-hello-world
更新
这是我为运行文件保存命令而编写的 Visual Studio Code 扩展。 https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave.