跳过正文

Coding

与 AI 的 Neovim 现代化折腾纪实 (2026版)

·212 字·1 分钟
太久没写代码,重拾 Neovim 时发现不仅肌肉记忆有些生疏,而且因为插件生态的“疯狂内卷”,原来的配置报出了一连串的错误。于是和 AI 结结实实地“折腾”了一番,完成了一次 Neovim 架构的现代化升级。 这篇博客是我和 AI 聊天复盘的摘要记录,方便以后如果又断档了,可以快速接上思路。 1. 认知转换:从“极客生存手册”到“现代 IDE” # 在重新梳理快捷键和工作流时,AI 敏锐地指出我之前的旧文档思维还停留在原生 Vim 时代。而我现在的配置,其实已经是一个极其现代化的 IDE,工具其实在主动配合直觉: 搜索与查找:从敲命令退化到了全屏互动(全面拥抱 fzf-lua,支持代码预览和悬浮窗)。 精准跳转:不再依赖盲按 j/k 或者原生的标记,而是依靠视觉反馈的 Leap (s 瞬移) 和 Flash (S 语法树节点选择)。 多文件管理:用 Grapple (<leader>ma 打标, <leader>n 轮切) 替代了需要心智负担的数字 Buffer 管理,只把核心文件钉在书签里。 大纲与排错:用 Trouble 和 Aerial 侧边栏替代了底部的纯文本 Quickfix 列表。 2. 踩坑纪实:Treesitter 0.10+ 断代大迁移 # 这次遇到了 Neovim 社区目前最大的一个“断层更新”巨坑。因为我使用了 Neovim 0.12.0,核心 API 的变化导致了连环爆炸:

Neovim 工作流

·468 字·3 分钟
与 Vim 相比,Neovim 内置了许多实用插件和功能,Lua 配置也更易读、更强大。以下是一些在 Nvim 中编写代码的实用技巧。 搜索(文件、文本、诊断、帮助) # 与 search-in-vim 中介绍的技巧类似,我们可以在文件中搜索文本,或通过过滤文件名来查找文件。在 Neovim 中,我们使用 fzf-lua,与 fzf.vim 非常相似。 使用 FZF 选择器 FZF 的界面由一个选择器(对条目列表进行模糊搜索)和一个预览窗口组成。在选择器中,使用 c-j/k/n/p(或 c-u/d)移动。Tab/S-Tab 用于选择文件。默认操作(Enter)是编辑文件或发送到 qflist,具体取决于选中数量。若要编辑多个文件,使用 c-e。 另一个实用命令是"恢复"(<Leader>sr),可以继续上次的 FZF 搜索。 模糊匹配查找文件 # 用途 快捷键 说明 当前目录 中的文件 <Leader>f PWD 最近文件(MRU) <Leader>o 非常适合搜索之前打开过的文件 缓冲区 的同级文件 <Leader>s. 也包含子目录中的文件 项目范围的文件(git) <Leader>gf 只显示 git 跟踪的文件 以 缓冲区目录 为起点的任意路径 <Leader>sf 按 Enter 前可以修改路径 搜索文本 # 在文件中 Grep # 用途 快捷键 说明 当前目录中的文件 <leader>/ 使用 keyword -- glob 过滤文件(! 表示排除模式) Git 根目录 <leader>g/ 同上 当前 word/WORD <leader>w/W w 在可视模式下也有效 实时 grep:两个快捷键都使用"实时 grep",即每次按键都会运行一条新的 ripgrep 命令并更新结果,可以即时测试 grep 表达式。

在 Vim 中搜索

·372 字·2 分钟
搜索是开发中最常用也是最重要的操作之一。Vim 提供了非常高效和方便的搜索功能。 这篇笔记记录了一些常用的搜索命令、例子以及自定义的 key mapping。 使用 ripgrep 搜索文件内容(:Rg2 或 ,gg,,gw/,gW) 使用 git-grep 搜索 git branch/commit,以及使用 fzf 显示 git grep 的结果(:Ggrep) 使用 fzf/coc list 搜索当前文件/buffers 中的行,实现快速定位/跳转 使用 quickfix lists 快速访问上述搜索的结果,以及利用 :cdo/:cfdo 等命令对结果进行批量操作 在文件中通用搜索 # Ripgrep 与 fzf # fzf.vim 提供了 :Rg 命令来调用 ripgrep 搜索当前目录。不过,我构建了一个更实用的变体,支持指定路径并向 ripgrep 传递其他参数,映射到快捷键 <Leader>gg。

Vim 技巧

·158 字·1 分钟
搜索与处理多个文件 # 搜索 # 关于在文件中搜索词语/符号,请参见 search-in-vim。 要快速按文件名查找并打开文件,我使用 fzf 和 coc-list,以及以下按键绑定。 通用搜索 要在_工作目录_(而非当前文件/缓冲区目录)中打开文件,使用 :Files 或 ,lc(list current,列出当前目录)。 我还创建了快捷命令 ,lf(list file,列出文件),从当前缓冲区所在目录开始,可以在开始搜索前输入路径。 此外,还有 :Buffers / ,b 用于列出已打开的缓冲区,方便快速跳转。当打开了很多文件时非常有用。不过,使用 quickfix 列表、标记,或 :Lines / ,l* 精确跳转到某一行往往更高效。 Git 相关 要打开当前 git 仓库中的文件,使用 :GFiles 或 ,gc(git content),这使用 git ls-files 的文件列表,会遵循 .gitignore。 要只查看已修改的文件,使用 GFiles? 或 ,gs(git status)。