入职便领了一台MacBook Pro,不怕大家笑话,博主从来没用过mac,刚拿到手就很懵逼,虽说咱linux又不是没用过,但是冷不丁的切换至Mac用于工作,按照惯例也不配鼠标,刚开始还真有一点无所适从,不过经过两天的使用,摸索,渐渐也熟悉了Mac。本篇就主要归纳总结一下如果在Mac下配置Go语言开发环境,捎带手的提一下Mac的使用与开发工具vscode的配置。

1.Mac的使用

写在前面,mac的键跟我们平常使用的键盘不太一样:⌘、⌥、⇧、⌃、⎋

  • ⌘(command):四方角花型,称为花键
  • ⌥(option)(alt):Z字加一杠
  • ⇧:Shift
  • ⇪(caps lock)
    • 我的键盘标注为中/英
  • ⌃(control):向上的尖括号
  • ↩(return)

博主在网上找了一张键盘图布局:

在这里插入图片描述

然后就是手上的MacBook Pro的布局,出入不大:

image-20210604002248770

这里只记录博主在使用,迫切的一些常用操作,快捷键:

1.1 锁屏

这个午休,上洗手间,习惯性的锁屏:control+command+Q

1.2 大小写锁定

只输入少量大写采用shift+字母键,但是想输入大量大写,就需要大小写锁定:

  • 大写锁定:shift+caps lock
  • 大写解锁:caps lock

1.3 新建文件夹

桌面上想创建文件夹:command+shift+N

1.4 删除文件夹

选中,删除文件夹:command+退格键

1.5 窗口隐藏

触摸板上,四根手指进行展开,经过试验,小拇指不要参与。

最小化

command+M

隐藏

command+H:这个一直可以隐藏至桌面最后一层。

1.6 返回桌面

这个在windows下经常用,开了太多的窗口,只想一键返回:command+option+H+M

1.7 微信快捷截图

这个常用,可以打开微信设置,一般就使用默认的control+command+A

1.8 全屏模式切换

command+control+F

1.9 系统截图

  • shift + command + 3(全屏截图)
  • shift + command + 4(局部截图)
  • shift + command + 4 + 空格(窗口截图)
  • shift + command + 6(Touch Bar截图)

shift + command + 3为全屏截图,按下之后系统会快速进行截图而不用手动选取。

shift + command + 4为局部截图,按下之后需要使用鼠标拖动想要截图的画面。

如果想要截屏整个窗口的话,可以在按下shift + command + 4之后按下空格键,这样系统就会进入窗口截图模式。在这个模式下,系统会自动帮你选取完整的窗口,然后制作出一张带有阴影的留白的截图,你要做的只是点击一下鼠标而已。相比起传统的截图,这种完整窗口的截图看上去好看不少。

shift + command + 6,可以截取Touch Bar的显示内容。截图完成之后,文件会默认保存在桌面。截图默认格式为PNG

1.10 隐藏文件的显示/隐藏切换

在开发过程中,有很多配置文件都是以.开头的,但是在mac中,这种文件就是隐藏文件,默认是不显示的,所以可以通过**command+shift+.**进行隐藏文件的显示/隐藏的切换。

1.11 在当前文件夹打开终端

在windows下经常需要在当前文件夹下打开cmd或者powershell;

打开访达→服务→服务偏好设置,勾选新建位于文件夹的终端窗口。当然博主这边设置了一下快捷键,目前还没跟其他快捷键冲突:control+⌥+T

其余终端命令就不赘述,什么cd ls vim都跟linux下差不多,更多快捷键参考:

https://support.apple.com/zh-cn/guide/terminal/trmlshtcts/mac

https://support.apple.com/zh-cn/HT201236

2.Go语言开发环境

熟悉系统后,重要进入正题了,开发环境的搭建。

2.1 下载安装

Go官网下载地址:https://golang.org/dl/

Go官方镜像站(推荐):https://golang.google.cn/dl/

image-20210604004930858

下载darwin-amd64.pkg(2022-11-01勘误,请选择arm64,否则后面不能进行调试,详情请参考【Golang】无法调试Golang程序——Mac(M1芯片)上)后,直接打开安装,点击下一步安装即可,跟windowsmsi安装一样简单,最终会将go安装到/usr/local/go目录下;

image-20210604010204351

gopath会默认指定为/Users/xxx/go

image-20210604015340421

2.2 修改代理

这个很重要,无论是下面的visual studio code下载开发工具需要,还是再往后开发阶段下载包同样需要。

go env -w GOPROXY=https://goproxy.cn,direct

3.Visual Studio Code配置

Goland是收费的,不知道公司是否有统一授权或者那种批量授权,好像是需要自己想办法激活,要么交钱,要么xx,博主这边暂时先安装Visual Studio Code,首先在windows下用过,其实也还顺手,但在windows下存在如下问题:

  • 智能提示时灵时不灵
  • go-lint反应迟钝;

但是这些问题,在mac下均不存在,有人说在ubuntu下也不存在,手上有ubuntu的童鞋可以测试一下。私以为如果这些问题都不存在,那么visual studio code的开发体验会很好的。

3.1 下载安装

官网:https://code.visualstudio.com/docs/?dv=osx

博主是很久没有下载安装vscode了,人说士别三日当刮目相待,没想到vscode下载会变得这么慢,以前超快的,刚开始我还以为是windows和mac版本问题,最后发现在windows下下载也变得同样缓慢,缓慢到最后,甚至会Failed-Network error.

image-20210604011725501

下载缓慢解决方案

复制官方下载链接:https://az764295.vo.msecnd.net/stable/054a9295330880ed74ceaedda236253b4f39a335/VSCode-darwin-universal.zip

az764295.vo.msecnd.net替换为vscode.cdn.azure.cn,https://vscode.cdn.azure.cn/stable/054a9295330880ed74ceaedda236253b4f39a335/VSCode-darwin-universal.zip,然后将完整地址用于浏览器打开,下载速度就起来了。

3.2 安装中文简体插件

这个看自己的意愿,博主觉得英文也大概能看懂。直接再插件中搜索chinese,第一个就是中文简体插件,下载安装后记得重启。

image-20210604012346837

3.3 安装go开发扩展

安装Go扩展插件,让vscode支持Go语言开发。

image-20210604012456016

3.4 安装go开发工具

command+shift+P,键入go install,选择Install/Update Tools,全选-OK,对工具进行安装

image-20210604012758440

image-20210604012827970

所有的开发工具都会安装至gopath目录的bin中,如下图:

image-20210604021140610

后续如果继续安装一些开发工具,例如air,husky等等,也会安装至此。

3.5 设置环境变量

上一节已经提到,一些开发工具会安装至GOPATH中,所以我们需要把$GOPATH/bin设置为环境变量,以便我们可以直接使用这些工具,windows下没有这个步骤,因为msi安装过程中自动设置了。

bash

vim ~/.bash_profile
export PATH=$PATH:/Users/fieldrandy/go/bin
source ~/.bash_profile

zsh

如果每次都是使用bash终端,那么上面的修改已经生效,但是因为在mac里默认使用的是zsh终端,一旦关闭这个终端后,要想再次使用配置好的环境变量,需要再次使用source命令,要想一劳永逸的在zsh中使用配置好的环境变量,必须执行下面的步骤才会在zsh中生效:

vim ~/.zshrc
export PATH=$PATH:/Users/fieldrandy/go/bin
source ~/.zshrc

3.6 配置settings.json

博主一口气安装了Prettier ESLint Vetur vscode-icon等插件

  • command+shift+P
  • 输入settings.json
  • 选择Preferences:Open Settings(JSON)
{
    "editor.fontSize": 18, //编辑器字体大小
    "workbench.iconTheme": "vscode-icons", //vscode文件图标主题
    "go.formatTool": "goimports", //golang格式化工具
    "editor.defaultFormatter": "esbenp.prettier-vscode", //编辑器格式化工具
    "[javascript]": {
        "editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
    }, //javascript格式化工具
    "[vue]": {
        "editor.defaultFormatter": "octref.vetur"
    }, //vue格式化工具
    "[go]": {
        "editor.insertSpaces": false,
        "editor.formatOnSave": true,  //保存自动格式化go语言代码
        "editor.codeActionsOnSave": {
            "source.organizeImports": true
        },
        "editor.defaultFormatter": "golang.go", //格式化器
        "editor.suggest.snippetsPreventQuickSuggestions": false
    },
    "editor.insertSpaces": false,
    "workbench.editor.enablePreview": false, //打开文件不覆盖
    "search.followSymlinks": false, //关闭rg.exe进程
    "editor.minimap.enabled": false, //关闭快速预览
    "files.autoSave": "afterDelay", //编辑自动保存
    "editor.lineNumbers": "on", //开启行数提示
    "editor.quickSuggestions": {
        //开启自动显示建议
        "other": true,
        "comments": true,
        "strings": true
    },
    "editor.tabSize": 2, //制表符符号eslint
    "editor.formatOnSave": true, //每次保存自动格式化
    // "eslint.codeActionsOnSave": {
    //     "source.fixAll.eslint": true
    // },
    "prettier.eslintIntegration": true, //让prettier使用eslint的代码格式进行校验
    "prettier.semi": true, //去掉代码结尾的分号
    "prettier.singleQuote": false, //使用单引号替代双引号
    "javascript.format.insertSpaceBeforeFunctionParenthesis": true, //让函数(名)和后面的括号之间加个空格
    "vetur.format.defaultFormatter.html": "js-beautify-html", //格式化.vue中html
    "vetur.format.defaultFormatter.js": "vscode-typescript", //让vue中的js按编辑器自带的ts格式进行格式化
    "vetur.format.defaultFormatterOptions": {
        "js-beautify-html": {
            "wrap_attributes": "force-aligned" //属性强制折行对齐
        },
        "prettier": {
            "semi": false,
            "singleQuote": true
        },
        "vscode-typescript": {
            "semi": false,
            "singleQuote": true
        }
    },
    "eslint.validate": [
        "vue",
        // "javascript",
        "typescript",
        "typescriptreact",
        "html"
    ],
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    },
    "workbench.colorTheme": "Winter is Coming (Dark Blue)",
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "editor.fontLigatures": true,
    "terminal.integrated.tabs.enabled": true
}

3.7 修改主题

  • command+shift+P
  • 输入color theme
  • 选择Preferences:Color Theme

这里可以选择已有主题,博主一般喜欢安装另外主题Install Additional Color Themes...

image-20210604022432708

Winter is Coming Theme

image-20210604022510572

3.8 修改字体为Fira Code

关于Fira Code字体这个事情,博主不推荐,也不建议,也不评价,反正就是仁者见仁智者见智的事情,喜欢的真喜欢,讨厌的真讨厌。喜欢就用吧,讨厌就别看了,反正当您用了Fira Code字体后,您的代码就会变成这样:

image-20210604023339353

下载

https://github.com/tonsky/FiraCode/releases/tag/5.2

安装

上面的压缩包打开ttf文件夹:

  • 全选所有字体文件
  • 右键→打开方式→字体册(Open With Font Book)
  • 安装字体

brew方式参考:https://github.com/tonsky/FiraCode/wiki/Installing

配置vscode

command+,打开settings的可视化配置,搜索font family,把Fira Code填入即可。

image-20210604024456679

更多方式参考:https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions

3.9 配置代码片段快捷键

这个就是一个大的代码片段用快捷键代替。例如输入pkgm,就会补全代码片段:

package main

func main(){
    
}
  • command+shift+Psnippetsgo

image-20210604025626363

{
	"println":{
		"prefix": "pln",
		"body":"fmt.Println($0)",
		"description": "println"
	},
	"printf":{
		"prefix": "plf",
		"body": "fmt.Printf(\"$0\")",
		"description": "printf"
	}
}

4.补充golang跨平台编译

默认我们go build的可执行文件都是当前操作系统可执行的文件,刚好博主的博客一键发布工具以后可能会在mac上使用,go是支持交叉编译的,在一个平台生成另一个平台的可执行程序,先编译一版吧,在windows下编译Mac64为可执行程序,在cmd中执行如下命令:

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build

ps:.net core也支持交叉编译。【Deploy】记一次Linux程序部署(Python与Dotnet Core)3.1节有介绍。

就总结到这儿吧,后续可能还会补充!