NEOVIM · GO · DAY 01

安装与健康检查

第一天不要急着搭 IDE。今天只确认三件事:工具链能被系统找到,Nvim 能正常启动并给出健康报告, Go 项目能在终端和编辑器之间来回跑通。后面 29 天的效率,都压在这一天的地基上。

DAY 01 / 30 TIME 45 - 75 min OUTPUT init.lua + Go module CHECK :checkhealth + go test

今日验收

DONE MEANS
GOAL

今日目标

装好 Neovim、Go、ripgrep、fd 和 gopls;建立一个可提交的 Nvim 配置入口;创建一个最小 Go module,并在 Nvim 里完成打开、编辑、保存、运行。

CHECK

完成标准

nvim --versiongo version:checkhealth 都能跑;go run . 有输出;今天的配置和练习代码都进入 Git。

1. 安装基础工具

TOOLS

macOS 可以直接用 Homebrew;Linux 用户换成自己的包管理器即可。先只装基础工具,不装主题、状态栏和补全插件。

$ brew install neovim go ripgrep fd
$ go install golang.org/x/tools/gopls@latest
$ nvim --version
$ go version
$ rg --version
$ fd --version
如果 gopls 安装后找不到,先看 go env GOPATH,把 $GOPATH/bin$HOME/go/bin 加进 PATH

2. 建立最小 Nvim 配置入口

INIT.LUA

今天的配置只负责“能写代码”:行号、缩进、leader 键、保存快捷键。插件管理器留到后面,避免第一天就把问题来源变多。

$ mkdir -p ~/.config/nvim
$ nvim ~/.config/nvim/init.lua
vim.g.mapleader = " "

vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.termguicolors = true

vim.keymap.set("n", "<leader>w", "<cmd>write<cr>", { desc = "Save file" })
如果你已经有 Nvim 配置,今天不要重写它。先复制一份备份,再把这段内容放进一个临时练习目录,目标是理解每行配置的作用。

3. 跑一次健康检查

HEALTH
NVIM

检查编辑器环境

:checkhealth
:version
:echo stdpath("config")

先处理红色错误;Python、Ruby、Node provider 的黄色提示可以记下来,今天不必全部修。

SHELL

确认 Go 环境

$ go env GOPATH
$ go env GOMODCACHE
$ gopls version

能解释这些路径,比抄一段 LSP 配置更重要。以后诊断 “gopls 不工作” 时,路径就是第一条线索。

4. 创建 Day01 Go 练习项目

GO MODULE

项目只需要小到足以验证工具链:一个函数、一个测试、一次运行。你要练的是从 Nvim 写入文件,然后回到终端验证。

$ mkdir -p ~/code/lab/nvim-go-day01
$ cd ~/code/lab/nvim-go-day01
$ go mod init example.com/nvim-go-day01
$ nvim main.go main_test.go
这条命令会把 main.gomain_test.go 都放进 Nvim 的 buffer 列表。输入 :ls 查看已打开文件,:bnext / :bprevious 前后切换,Ctrl-^ 可以在当前文件和上一个文件之间来回跳。
package main

import "fmt"

func hello(name string) string {
	return fmt.Sprintf("hello, %s", name)
}

func main() {
	fmt.Println(hello("Nvim + Go"))
}
package main

import "testing"

func TestHello(t *testing.T) {
	if got := hello("Nvim"); got != "hello, Nvim" {
		t.Fatalf("hello() = %q", got)
	}
}
$ gofmt -w main.go main_test.go
$ go test ./...
$ go run .

5. 做 15 分钟编辑器热身

WARMUP
动作训练方式今天只要达到
模式切换i 进入 insert,Esc 回 normal,v 进入 visual。能清楚说出自己在哪个模式,不再盲按方向键。
保存与退出:write:quit<leader>w不用鼠标完成保存;退出前知道文件是否已修改。
基础移动hjklwbggG/hello能在 main.go 里快速跳到函数名、测试名和文件末尾。
切换文件:ls 查看 buffer,:bnext / :bprevious 前后切换,Ctrl-^ 回到上一个编辑文件。能在 main.gomain_test.go 之间不退出 Nvim 来回编辑。
撤销恢复u 撤销,Ctrl-r 恢复。敢于编辑,因为知道自己能退回来。

6. 写 Day01 日志并提交

COMMIT

日志不要写感想长文,只记录可复现信息。明天配置出问题时,今天的版本号和警告就是排查起点。

$ mkdir -p notes
$ nvim notes/day01.md
$ git init
$ git add .
$ git commit -m "day01 bootstrap nvim go workspace"
DAY01 LOG

日志模板

记录四行即可:Neovim 版本、Go 版本、:checkhealth 里仍然存在的警告、今天最不顺手的一个编辑动作。明天只复盘这四行。

参考资料

PRIMARY SOURCES
NEOVIM

Health 与 LSP

Neovim health 文档 解释 :checkhealthNeovim LSP 文档 解释内置 LSP 客户端。

GO

Go 与 gopls

Go 入门教程 说明 go mod initgo rungopls 文档 说明 Go 语言服务器。