引言
周末也是注定不平凡的,早上老婆带娃出去嗨了,被留下独守空房;起床被业主挑到 bug,然后修复;下午撕逼总包方和另一个分包方,最后完胜;都不妨碍玩玩 neovim + lazyvim + opencode。
1. 推荐系统:Linux 优先,Windows 用 WSL 更省心
- • Linux 原生 CLI/包管理生态更完善,终端性能与兼容性更佳。
- • 插件与 LSP 服务在 Linux 下踩坑更少,路径/权限问题更可控。
- • Windows 下建议直接用 WSL:统一类 Unix 环境,避免路径编码与依赖差异。
- • Neovim 在 WSL 中结合 tmux/kitty 等终端更丝滑,远程开发也更易配。
2. 三者简介与兼容性
- • Neovim:现代化、可扩展的 Vim,原生支持 LSP、Tree‑sitter 等,轻量可塑。
- • LazyVim:Neovim 的开箱即用发行版,提供合理的默认配置与插件管理,聚焦“即用即爽”。
- • opencode:自带免费编程模型,编辑器内的 AI 助手,支持对当前 buffer/选区/诊断等上下文的感知,强调“编辑器内对话、可执行指令、可回流到代码”的工作流。
- • 兼容性:opencode 通常可接入主流 AI 编程模型(如 OpenAI、Anthropic、Mistral、Ollama 等),具体以你运行的 opencode 实例配置为准;在 Neovim 中通过 opencode.nvim 实现无缝集成。
3. 集成:LazyVim × opencode × opencode.nvim
opencode.nvim 可以自动连接在当前工作目录运行的 opencode(要求以 --port 暴露服务),并在 Neovim 内共享上下文、展示状态、执行命令与响应权限请求。其特性包括自动连接、共享 buffer/selection/diagnostics、提示词库与自定义、命令执行、实时回流与状态栏组件、将 SSE 事件转为 autocmd 等。
在 LazyVim 的插件管理中加入:
{"NickvanDyke/opencode.nvim", dependencies = { { "folke/snacks.nvim", opts = { input = {}, picker = {}, terminal = {} } }, },config = function() vim.g.opencode_opts = { provider = { enabled = "terminal" }, events = { reload = true }, } vim.o.autoread = true vim.keymap.set({ "n", "x" }, "<C-a>", function()require("opencode").ask("@this: ", { submit = true }) end, { desc = "Ask opencode…" }) vim.keymap.set({ "n", "x" }, "<C-x>", function()require("opencode").select() end, { desc = "Execute opencode action…" }) vim.keymap.set({ "n", "t" }, "<C-.>", function()require("opencode").toggle() end, { desc = "Toggle opencode" })end,}
供给端启动方式(任选其一):
opencode --port 3210
- • Provider 可选:终端/snacks/kitty;若使用 kitty 需启用远程控制 socket。
- • 建议在 Neovim 中执行
:checkhealth opencode 查看健康检查结果。
4. 基本使用速查
Neovim 操作(以 LazyVim 默认为例):
- • 插入/可视/命令:i 插入、v 可视、: 命令,Esc 返回普通模式
- • 删除:x 删字符、dw 删词、dd 删行、cw 改词
- • 文件侧边栏:Space + e 打开/切换文件目录
- • 模糊查找:Space + f f 查找文件,Space + / 查找当前缓冲区
opencode 使用:
- • 启动供给端:在项目根目录运行
opencode --port 3210。 - • 呼出对话:Ctrl + a,对当前光标/选区执行
ask("@this: ")。 - • 选择操作:Ctrl + x,打开动作选择器(如解释/修复/生成测试等)。
- • 上下文占位:
@this(光标或选区)、@buffer(当前缓冲区)、@diagnostics(诊断)、@diff(git diff)等。 - • 模型切换:在 opencode 会话内输入
/model 或 /model list 选择可用模型(取决于供给端支持)。
5. 小结
- • Neovim + LazyVim 提供轻量化的 IDE 能力;opencode 把“编辑器上下文 + AI 互动”打通到实用工作流。
- • 推荐在 Linux/WSL 下使用,减少环境差异与依赖问题。
- • 借助 opencode.nvim 的键位与上下文占位,日常“解释/优化/修复/补测/评审”变得高效而自然。
- • 实践要点:供给端必须公开端口(
--port),Neovim 中完成健康检查与键位配置,即可无缝上手。