goland to vscode

有时候开发的时候用不止用一种语言,goland 的优势就不是很大了,恰到周围有很多同事也在用 vscode 开发 go,就想迁移试试。

插件

以下是我认为相对比较重要的插件

  • IntelliJ IDEA Keybindings: jetbrains 式快捷键映射
  • JetBrains IDE Keymap: jetbrains 式快捷键映射
  • GitLens — Git supercharged: git 工具,下文详细说明
  • Go: go 开发必装
  • Code Spell Checker: 单词拼写检查
  • Custom CSS and JS Loader: 自定义编辑器的样式
  • Todo Tree: 增加一个快速查看Todo的侧边按钮
  • background: 换背景图
  • Monokai Pro: vscode的各种主题写起go来都感觉怪怪的,知道我遇见了这个主题
  • vscode-icons: 很好看的icon主题
  • Markdown Preview Enhanced & Markdown All in One: 搭配git,马上变成了一个优秀的记事本
  • Error Lens: 设置里面把 info 级别的 item 删掉,不然会有一堆拼写错误的提示
  • Go Mod Explorer: 查看 go sdk 和 下载的 go mod

快捷键

装了两个插件。一个插件支持 双击shift 查文件,另一个支持 shift+esc 查看或关闭terminal,这两个快捷键是我常用的,所以这两个插件都保留了。

还有一些插件无法覆盖的快捷键,我就手动加上了。

  • command+shift+f: 搜索。这个命令插件覆盖了,但是会打开 vscode 侧边栏的搜索窗口,这个搜索窗口太小了,习惯用 jetbrains 搜索的我无法适应。所以把这个快捷键改成了打开搜索tab。

    1
    2
    3
    4
    
    {    
      "key": "shift+cmd+f",
      "command": "search.action.openNewEditor"
    }
  • ctrl ctrl: 打开命令框

    1
    2
    3
    4
    
    {
      "key": "ctrl ctrl",
      "command": "workbench.action.showCommands"
    }

Git

git 主要是用到了 GitLens 的一些能力

  • Commit Graph: 用来查看提交记录,执行一些 revert、undo 等操作

  • File History: 文件的改动历史

  • Search & Compare: 版本对比

vscode 自带的 git 用来提交 commit ,虽然没有 goland 好用,但还凑活。

(主要是选择部分文件进行提交的场景有一点麻烦,目前我采用的方式是在git窗口加入staged,然后命令行commit)

查看 git 文件的时候使用 command+down 快速定位文件

配置快捷键

1
2
3
4
5
{
    "key": "cmd+down",
    "command": "git.openFile",
    "when": "config.git.enabled && isInDiffEditor && !git.missing && gitOpenRepositoryCount != '0' && resourceScheme =~ /^git$|^file$/"
}

debug

  • 点击 run testdebug test 的时候没有打印日志。

    这个可以添加配置解决 settings.json

    1
    2
    3
    
    {
        "go.testFlags": ["-v"]
    }
  • debug 的时候查看 VARIABLES 有些比较大的 value 展示不全。

    这个可以添加配置解决 settings.json

    1
    2
    3
    4
    5
    
    {
        "go.delveConfig": {
            "maxStringLen": 2048,
        },
    }

美化

最后再来说一下美化。

background 插件可以换背景图。

Custom CSS and JS Loader 插件对编辑进行了优化

主要参考了这两个内容:

其他

自动保存

设置延时保存会让自动格式化失效

format on save 设置有相关描述

因此我将 auto save 设置为 onFocusChange

这样会在窗口失焦的时候自动保存,然后执行自动 format。当然,手动 command+s 也是可以的。

代码模板 snippets

搜索命令:Configure Snippets

具体配置方法参考示例即可,提升效率利器。

痛点

粘贴字符串不会自动转义

goland 在双引号内粘贴字符串的时候会自动添加转义符,这个非常方便,vscode 一直没找到合适的类似的插件