---
title: Neovim 总览
url: https://doc.liz6.com/tools/nvim/01-overview
locale: zh
area: tools
tags:
- tools
- nvim
date: null
modified: 2026-06-30
description: 基于 LazyVim 的 Neovim —— 配置很薄,真正属于我的是几处 option 和语言集。
---

# Neovim 总览

编辑器是 Neovim,在 [LazyVim](https://www.lazyvim.org) 上做的。选发行版而不是从零搭,是因为 LSP、Treesitter、格式化、调试这些早被人配好了,我没必要重造;代价是我自己的配置很薄——`init.lua` 就一行,真正属于我的只有 `lua/config/options.lua` 几处设置、`lazyvim.json` 里勾的语言,和 `lua/plugins/` 里加的十来个插件([下一篇](02-plugins-keymaps.md)讲)。

语言基本"勾个 extra 就齐活"——LazyVim 的每个 `lang.*` extra 会把对应的 LSP、Treesitter parser、formatter、DAP 一次配齐,我只在 `lazyvim.json` 里勾。平时开着这几样:

- **rust** → rustaceanvim(比裸 rust-analyzer 多了 runnables/debuggables、宏展开、`:RustLsp`)+ crates.nvim 在 `Cargo.toml` 里提示版本。
- **go** → gopls + delve 调试 + 自动 `goimports`。
- **dotnet / C#** → 走 [roslyn.nvim](02-plugins-keymaps.md),大 solution 下比 omnisharp 稳。
- **clangd** → C/C++ 的 LSP,跨编译单元跳转、`clang-format` 对接 `.clang-format`。
- **java** → jdtls(它自己是个 Eclipse 跑出来的 LSP,启动稍重)。
- **typescript** → vtsls,前端项目的补全/重命名/code action。

勾 extra 而不是手配的好处是:LSP 装哪个版本、formatter 怎么接、DAP adapter 哪来,LazyVim 都有合理默认,我不用为每门语言重写一遍 boilerplate。

options 里有三处是按我的工作方式定的,值得单说:

剪贴板走 **OSC52**——用终端转义序列复制。这意味着哪怕在 SSH 或 Wayland 下,yank 也能进系统剪贴板,不依赖 xclip/wl-copy 那条经常出问题的链路。

**autoformat 关掉**。我不喜欢保存时悄悄改一堆东西,宁可手动或按项目触发,免得提交里混进无关的格式 diff。

还检测了 Windows,遇到就把 shell 切 pwsh、设好 UTF-8。同一份配置经 [chezmoi](../chezmoi.md) 在那台 Windows 上照跑。

最后一处不在 options 里但很关键:`Ctrl+hjkl` 切窗口、到边界跨进 [Zellij](../zellij.md) 面板,靠 smart-splits 实现(`at_edge='stop'` 防止死角回弹)。编辑器和复用器一套移动键,这是我整套环境的基调。
