Skip to content

Instantly share code, notes, and snippets.

@tupunco
Last active April 18, 2023 09:13
Show Gist options
  • Save tupunco/7f688aa5519d694b9621be119b53e9e6 to your computer and use it in GitHub Desktop.
Save tupunco/7f688aa5519d694b9621be119b53e9e6 to your computer and use it in GitHub Desktop.
vscode-go 配置

ctrl+shift+p

  • 安装 vscode-go 插件:
> ext install Go
  • 安装 go tools:
> Go Install/Update Tools
  • 新项目按 vscode-go-build 配置.

  • 下载失败配置 hosts:

自寻 梯子 吧, 下面的 Hosts 不能解决所有问题. :(

https://github.com/googlehosts/hosts
# 部分 Github Hosts
192.30.253.118	gist.github.com
192.30.253.112	github.com
192.30.253.112	www.github.com

自配 梯子 后可以做一个批处理(Windows) goproxy.bat 放到 goroot/bin 文件夹, go get 前先执行本批处理

@echo off
echo --------set http_proxy=127.0.0.1:1080-------------
set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080

配置 梯子同步代码 提示 fatal: unable to access 'https://go.googlesource.com/...' 错误, 可设置全局 git config --global http.sslVerify false 关闭 SSL 验证, 或对老的已同步项目配置 .git/config 文件关闭 SSL 验证

[http]
	sslverify = false

所有配置文件在 .vscode 文件夹下

settings.json

自定义 GOPATH 配置:

本配置不是必须, 碰到独立 gopath 项目设置.

{
    "terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\cmd.exe",
    "go.gopath": "${workspaceRoot}",
    "go.inferGopath": true
}

task.json

快捷键 Ctrl+Shift+b 触发 手动编译任务, 首次调用会自动创建 task.json:

linux/osx run 命令没有测试是否正确

{
    "version": "2.0.0",
    "linux": {
        "options": {
            "env": {
                "GOPATH": "${env:GOPATH}:${workspaceRoot}"
            }
        }
    },
    "windows": {
        "options": {
            "env": {
                "GOPATH": "${env:GOPATH};${workspaceRoot}"
            }
        }
    },
    "osx": {
        "options": {
            "env": {
                "GOPATH": "${env:GOPATH}:${workspaceRoot}"
            }
        }
    },
    "tasks": [
        {
            "label": "go build",
            "command": "go",
            "type": "shell",
            "promptOnClose": false,
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "args": [
                "build",
                "-i",
                "-v"
            ],
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": [
                "$go"
            ]
        },
        {
            "label": "go run",
            "command": "go",
            "type": "shell",
            "group": "none",
            "args": [
                "run",
                "main.go"
            ],
            "promptOnClose": false,
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": [
                "$go"
            ]
        },
        {
            "label": "go build & exec",
            "command": "go",
            "type": "shell",
            "group": "none",
            "windows": {
                "args": [
                    "build",
                    "-i",
                    "-v",
                    "&",
                    "${workspaceRootFolderName}.exe"
                ]
            },
            "linux": {
                "args": [
                    "build",
                    "-i",
                    "-v",
                    "|",
                    "./${workspaceRootFolderName}"
                ]
            },
            "osx": {
                "args": [
                    "build",
                    "-i",
                    "-v",
                    "|",
                    "./${workspaceRootFolderName}"
                ]
            },
            "promptOnClose": false,
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": [
                "$go"
            ]
        }
    ]
}

launch.json

配置调试:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "dlv-DEBUG",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceRoot}",
            "windows": {
                "env": {
                    "GOPATH": "${env:GOPATH};${workspaceRoot}"
                }
            },
            "linux": {
                "env": {
                    "GOPATH": "${env:GOPATH}:${workspaceRoot}"
                }
            },
            "osx": {
                "env": {
                    "GOPATH": "${env:GOPATH}:${workspaceRoot}"
                }
            },
            "args": []
        }
    ]
}

keybindings.json

快捷键配置:

ctrl+shift+delete 强制结结束执行任务, ctrl+r 运行 task.json 内配置的任务

[
    {
        "key": "ctrl+shift+delete",
        "command": "workbench.action.tasks.terminate" 
    },
    {
        "key": "ctrl+r",
        "command": "workbench.action.tasks.runTask",
        "when": "editorTextFocus"
    }
]
@binary4cat
Copy link

VSCode能不能像LiteIDE那样直接跳转到源码查看,直接跳转到源码确实有用很多。

@tupunco
Copy link
Author

tupunco commented Dec 27, 2017

@haijiandong 我觉得你需要把 VSCode 快捷键列表详细看看, 或者看这里:

@phoeshow
Copy link

根据测试其实是可以的,只要按着alt键然后点击函数名字就可以了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment