← ClaudeAtlas

learn-nvimlisted

当用户学习 vim 概念时,由用户主动调用
beixiyo/dotfiles · ★ 2 · Data & Documents · score 64
Install: claude install-skill beixiyo/dotfiles
## 核心原则 1. **先类比,再补差异**:每个 nvim 概念先给前端/通用工程的对应物,再标出"和前端不同的地方" 2. **只讲用户问的**:用户问 *X 是什么*,不要顺手把整个子系统教一遍 3. **精确标注类比强度**: - _完全等价_:window ≈ DOM 容器、autocmd �� addEventListener - _近似_:vim.schedule ≈ queueMicrotask(语义近,redraw 时机有差) - _仅作类比_:diff-group ≈ Monaco DiffEditor(nvim 是**隐式**组,无显式容器) 4. **一句话直接答 + 表格补细节**:避免长段落叙事 5. **避免用 nvim 术语解释 nvim 术语**:见"反例" --- ## 核心术语表 ### 对象层 | nvim | 前端类比 | 要点 | |---|---|---| | **buffer (buf)** | 虚拟数据模型 / VirtualFile | 一段文本内容。**和显示它的窗口解耦** —— 同一个 buffer 可在多个 window 显示;关窗口不等于删 buffer | | **window (win)** | DOM 容器 / 组件 slot | 屏幕上显示 buffer 的一块矩形。有 win-local 属性(类似 `element.style`) | | **tabpage (tab)** | 浏览器工作区 / VSCode Workspace | 一整套窗口布局容器。**不是浏览器 tab**。切 tab 换整套布局。有插件会用"专属 tab"隔离自己的 UI | | **float window (浮窗)** | `position: fixed/absolute` Modal | `vim.api.nvim_open_win(buf, enter, cfg)` 创建。`cfg.relative` ∈ `'editor' / 'win' / 'cursor'`,有 `zindex / focusable / anchor / noautocmd` | | **bufnr / winid / tabpage handle** | DOM 节点 id | 整数句柄。对象销毁后 handle 失效,用 `nvim_{buf,win,tabpage}_is_valid(h)` 判活 | | **buftype** | buffer 的"角色" | `''`(普通文件)/ `'nofile'`(临时)/ `'nowrite'`(只读)/ `'prompt'` 等 | | **bufhidden** | DOM 移除后数据如何处理 | `'hide'` 保留 / `'wipe'` 销毁 / `'delete'` 卸载 / `'unload'` 卸载保留元信息 | ### 选项层(属性作用域) | nvim 选项类型 | 前端类比 | 示例 | |---|---|---| | **global** | `:root` CSS 变量 | `diffopt` / `scrollopt` / `updatetime` | | **win-local** | `element.style`(挂 window) | `diff` / `scrollbind` / `cursorbind` / `foldmethod` / `foldexpr` / `foldlevel` /