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

推荐订阅源

T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security Affairs
N
News and Events Feed by Topic
T
Tenable Blog
P
Proofpoint News Feed
W
WeLiveSecurity
Simon Willison's Weblog
Simon Willison's Weblog
Google DeepMind News
Google DeepMind News
C
CERT Recently Published Vulnerability Notes
Help Net Security
Help Net Security
I
Intezer
T
Threat Research - Cisco Blogs
S
Secure Thoughts
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Project Zero
Project Zero
The Hacker News
The Hacker News
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tor Project blog
N
News | PayPal Newsroom
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
Arctic Wolf
Forbes - Security
Forbes - Security
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Security Latest
Security Latest
P
Palo Alto Networks Blog
S
Schneier on Security
S
Securelist
C
Cybersecurity and Infrastructure Security Agency CISA
H
Heimdal Security Blog
V
Vulnerabilities – Threatpost
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页
T
Troy Hunt's Blog
Latest news
Latest news
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
L
LINUX DO - 热门话题
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
V
Visual Studio Blog
H
Hacker News: Front Page

浮华生

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