惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
T
Threatpost
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
C
CERT Recently Published Vulnerability Notes
V
Vulnerabilities – Threatpost
Help Net Security
Help Net Security
Project Zero
Project Zero
博客园 - 聂微东
博客园_首页
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
Latest news
Latest news
K
Kaspersky official blog
L
LINUX DO - 热门话题
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
C
Cyber Attacks, Cyber Crime and Cyber Security
A
Arctic Wolf
aimingoo的专栏
aimingoo的专栏
J
Java Code Geeks
F
Full Disclosure
Recent Announcements
Recent Announcements
SecWiki News
SecWiki News
C
Cybersecurity and Infrastructure Security Agency CISA
F
Fortinet All Blogs
The Hacker News
The Hacker News
Apple Machine Learning Research
Apple Machine Learning Research
NISL@THU
NISL@THU
The GitHub Blog
The GitHub Blog
量子位
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Palo Alto Networks Blog
T
Troy Hunt's Blog
O
OpenAI News
T
Threat Research - Cisco Blogs
博客园 - Franky
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
About on SuperTechFans
C
Check Point Blog
Hacker News: Ask HN
Hacker News: Ask HN
AWS News Blog
AWS News Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog

浮华生

Elasticsearch 检索性能优化 - 浮华生 舆情监控系统综述 - 浮华生 2024 半年度总结 - 浮华生 2023 年终总结 - 浮华生 异地机器组网方案 - 浮华生 Kubernetes 部署 Elasticsearch 和 Kibana - 浮华生 2022 年终总结 - 浮华生 RabbitMQ connection channel 的关系 - 浮华生 Kafka Java 客户端 Producer 原理分析 - 浮华生 RabbitMQ 和 Kafka 应用原理简单对比 - 浮华生 阿里云 OpenSearch 介绍 - 浮华生 Golang Array 和 Slice 区别 - 浮华生 电商搜索技术总结 - 浮华生 电商搜索业务总结 - 浮华生 2021 年终总结 - 浮华生 Cypress 实践总结 - 浮华生 年终总结 - 浮华生 关于我 - 浮华生 使用 cucumber 进行行为驱动开发(BDD) - 浮华生 微服务应用集成 SpringCloud 步骤 - 浮华生 电商搜索数据同步方案 - 浮华生 通过一道数值转换题重温计算机补码 - 浮华生 macOS 系统推荐的一些软件 - 浮华生 DevOps 实施规划(持续更新) - 浮华生 rabbitmq 如何提高可靠性并保证消费端幂等 - 浮华生 AMQ Model总结 - 浮华生 结对编程 - 浮华生 RSocket 介绍 - 浮华生 面向对象的理解 - 浮华生 企业平台技术框架 - 浮华生 对创业的思考 - 浮华生 知难行易 - 浮华生 一年工作经验总结 - 浮华生 我与领域驱动之缘 - 浮华生 TDD 中使用的工具 - 浮华生 tf-idf 算法 - 浮华生 gitlab 添加代码规范检测 - 浮华生 query 改写 - 浮华生 阶段性总结 - 浮华生 操作系统作用 - 浮华生 - 浮华生 hamming-distance - 浮华生 ElasticSearch API 基本操作 - 浮华生 elasticsearch 集群容错 - 浮华生 ElasticSearch 基础概念 - 浮华生 技术选型怎么做 - 浮华生 条件概率、全概率与贝叶斯公式 - 浮华生 年终总结 - 浮华生 迁移到 ubuntu18 的问题及配置 - 浮华生 总结 - 浮华生 使用 psi-probe 监控 Tomcat - 浮华生 Tomcat 远程 Debug - 浮华生 jstack 死循环和死锁定位 - 浮华生 jmap & mat 内存溢出 - 浮华生 JVM 常用参数查看 - 浮华生 周总结(8.13-8.19) - 浮华生 周总结(7.30-8.4) - 浮华生 使用移位运算符 - 浮华生 master 公式 - 浮华生 VMware 12 NAT网络下配置 ubuntu 16.04 LTS 系统静态 IP - 浮华生 关于进制的计算 - 浮华生 项目总结 第三篇 - 浮华生 项目总结 第二篇 - 浮华生 editor.md 富文本编辑器的使用 - 浮华生 项目总结 第一篇 - 浮华生 2017至今总结 - 浮华生 谈谈微服务 - 浮华生 单例模式 - 浮华生 tor 使用 - 浮华生 归档 - 浮华生 搜索 - 浮华生 搜索 && 推荐 - 浮华生
Mac OS 下打造 golang nvim 编程环境之基础配置 - 浮华生
浮华生 · 2022-03-29 · via 浮华生

目的

为了提升编程效率,本着少即是多的原则,开始打造自己的精兵利器。

先看效果

image-20220329221657580

使用 vim 的好处就是不需要再依赖于鼠标或者妙控板之类的外设,能专注于编码工作,所见即所得。

依赖环境

对于本次配置,基本上采用的都是就目前来说最新的版本,如下 checklist:

  • Golang v1.18
  • iterm2
  • Oh-my-zsh
  • brew
  • Vim
  • NeoVim
  • Ctags
  • vim-plug
  • vim-go
  • coc-go
  • Hack Nerd Font

为了不受网络影响还需要一个全局代理,也就是说会科学上网。

安装步骤

安装 golang

golang 安装教程自行 Google,下载完成后使用 go env 进行验证。

goenv 中 GOROOT 代表的是 golang 安装的位置,mac 上默认的是 /usr/local/go 位置,如果你自定义安装了,可以使用

GOPATH 是指 golang 下载的二进制可执行文件或者三方包存放的位置,mac 默认是 ${HOME}/go

安装字体

iterm2 + oh-my-zsh 的配置自行 Google,根据自己喜好自定义主题样式。

由于 vim 中图标是 non-ascii 字体,直接使用会出现 ?的乱码,所以需要安装 Hack Nerd Font 字体,使用如下命令

1
2
brew tap homebrew/cask-fonts
brew cask install font-hack-nerd-font

安装完后进入 iterm2-> Performance -> Profiles -> Text 选择 Hack Nerd Font

image-20220329224414336

安装 vim 插件

Neovim 安装配置、vim-plug 的使用请自行 Google。

本次涉及的 vim 插件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
 Plug 'morhetz/gruvbox'
 Plug 'vim-airline/vim-airline'
 Plug 'vim-airline/vim-airline-themes'
 Plug 'mhinz/vim-startify'
 Plug 'Xuyuanp/nerdtree-git-plugin'
 Plug 'ryanoasis/vim-devicons'
 Plug 'airblade/vim-gitgutter'
 Plug 'fatih/vim-go'
 Plug 'neoclide/coc.nvim', {'branch': 'release'}
 Plug 'preservim/tagbar'

使用 :PlugInstall 进行安装,等待下载完成,然后进行依赖安装

下载 vim-go 依赖

在 vim 中使用 :GoInstallBinaries 命令将 vim-go 所需的依赖下载到本地

下载 coc-go

在 vim 中使用 :CocInstall coc-go 命令安装 coc 对 go 语言的支持

配置 coc

在 coc-go 安装完后需要对其进行配置,核心依赖是 gopls

在 vim 中使用 :CocConfig 命令打开配置文件,将 golang 配置粘贴进去

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{"languageserver": {
    "golang": {
      "command": "gopls",
      "rootPatterns": ["go.work", "go.mod", ".vim/", ".git/", ".hg/"],
      "filetypes": ["go"],
      "initializationOptions": {
        "usePlaceholders": true
      }
    }
  }
  }

额外的配置可以参考 coc-gococ.nvim

在使用 tagbar 插件时,会依赖系统的 ctags,如果在开启 tagbar 时出现如下错误,那么就需要更新系统的 ctags:

1
Tagbar: Ctags doesn't seem to be Exuberant Ctags!

更新方式:

测试

在安装完后,我们可以新建一个 go 项目进行测试

1
2
3
4
$ mkdir test
$ cd test
$ go mod init example.com/test
$ vi main.go

首次编辑 go 语言文件时,coc-go 会初始化环境,并且下载 gopls 到 ${HOME}/.config/coc/extensions/coc-go-data/bin 中,如果顺利的话你的界面将会是下面这个样子

image-20220329231857748

此时我们使用 :TagbarToggle:NERDTreeToggle 分别将文件结构和目录结构打开,也就是如下界面

image-20220329232039274

此时我们的基础配置就算完成了,后续在使用中不断优化打磨配置文件,最终变成一款得心应手的编辑器。

附:本人 nvim 目前配置

总结

在 go v1.18 中下载依赖时使用 go install 而不是之前的 go get 命令,后面在会再出一篇关于提升使用体验的文章。

参考文章

https://github.com/fatih/vim-go

https://github.com/BroQiang/vim-go-ide

https://pkg.go.dev/golang.org/x/tools/gopls#section-readme