
Vim 核心操作笔记与速查手册 (Linux 开发者版)目录模块一Vim 基础与模式认知Vim 的核心哲学四大基本模式模块二高频代码阅读与导航 (⭐ 最高频)基础移动与文件/屏幕跳转代码搜索与匹配跳转函数定义跳转与回退 (Tags)精准移动行内与单词跳转模块三高效代码编辑与重构 (⭐ 核心生产力)基础增删改查与剪切板可视模式 (Visual)文本对象 (Text Object) - 进阶必学批量替换命令 ()模块四多文件与工作区管理 (⭐ 多文件开发必备)Buffer、Window、Tab 的核心区别Window 分屏操作 (最常用)Buffer 后台管理Tab 标签页操作模块五进阶机制寄存器 (Register)模块六附录常见易错点纠正一页速查表模块一Vim 基础与模式认知1. Vim 的核心哲学Vim 是一个以键盘操作为核心的文本编辑器。它和普通编辑器最大的区别强调模式切换。强调移动 操作的语法组合。大部分操作是“直接命令式编辑”而不是“先用鼠标选中再点击”。例如dw(DeleteWord 删除单词)、ci(ChangeInner修改引号内容)。2. 四大基本模式Normal (普通模式)默认模式。用于移动光标、删除、复制、搜索。按Esc进入。Insert (插入模式)用于输入代码。i(Insert)在光标前插入。a(Append)在光标后追加。o(Open)在当前行下方打开新建一行。O(大写Open)在当前行上方打开新建一行。I(大写Insert)在当前行首第一个非空字符插入。A(大写Append)在当前行尾追加。Visual (可视模式)用于选择代码块。v(Visual)字符级可视选择。V(大写Visual)行级可视选择。Ctrl v块/列可视选择常用于批量加注释。Command-line (命令行模式)按:进入。常用于:w(Write 保存)、:q(Quit 退出)、:%s/a/b/g(替换)。模块二高频代码阅读与导航 (⭐ 最高频)Linux 开发中看代码的时间远大于写代码熟练掌握跳转是第一生产力。3. 基础移动与文件/屏幕跳转方向与翻页h,j,k,l左、下、上、右。历史遗留为让手指不离开主键盘区Ctrl d(Down)向下翻半页 (阅读代码最舒服的方式)。Ctrl u(Up)向上翻半页。Ctrl f(Forward)向下翻一整页。Ctrl b(Backward)向上翻一整页。行与文件跳转0跳到绝对行首 (第1列)。^跳到行首第一个非空字符。$跳到行尾。gg(Go)跳到文件开头。G(大写Go)跳到文件结尾 /10G跳到第10行。跳转历史回溯 (极度重要)Ctrl o(Older)跳回上一个旧位置 (后退)。Ctrl i(Inewer/Forward)前进到下一个新位置 (前进)。4. 代码搜索与匹配跳转/pattern向后搜索。?pattern向前搜索。n(Next)跳到下一个匹配项。N(大写Next)跳到上一个匹配项 (反向)。*向后搜索当前光标下的单词 (⭐查找变量引用神器)。#向前搜索当前光标下的单词。5. 函数定义跳转与回退 (Tags)阅读 C/C 或 Linux 源码时的刚需功能。单文件内快速跳转gd(Go toDefinition)跳转到光标下单词在当前函数/局部的定义。gD(Go to globalDefinition)跳转到光标下单词在当前文件/全局的定义。跨文件跳转 (需配合 ctags 工具)Ctrl ]跳入光标下函数/变量的定义处。Ctrl t(Tag pop)按标签历史原路跳出支持多层嵌套返回。g]如果项目中有多个同名函数列出所有匹配项供输入数字选择。6. 精准移动行内与单词跳转按单词跳w(Word)跳到下一个单词首字母 (以标点为界粒度细)。b(Backward)后退到上一个单词首字母。e(End)跳到当前或下一个单词的尾部。W/B/E(大写)按WORD跳 (以空格为界跨过标点粒度粗)。行内找字符f{char}(Find)向右找到本行下一个{char}(如f(跳到左括号)。t{char}(Till)向右走到本行下一个{char}的前挨着的一个字符(直到…)。;正向重复上一次的f或t。,反向重复上一次的f或t。模块三高效代码编辑与重构 (⭐ 核心生产力)7. 基础增删改查与剪切板删除 (Delete)x(cross out)删除光标下的字符。d(Delete)配合范围使用。dd(删整行)、D(删至行尾)。注Vim 的删除会自动存入寄存器相当于“剪切”。复制 (Yank意为拔出、扯下)y(Yank)配合范围使用。yy(复制当前行)。粘贴 (Put放置)p(Put)在光标后/下一行粘贴。P(大写Put)在光标前/上一行粘贴。修改 (Change 删除 进入插入模式)c(Change)配合范围。cw(改单词)、cc(改整行)、C(改至行尾)。替换 (Replace / Substitute)r{char}(Replace)只替换光标下当前单个字符不进入插入模式。s(Substitute)删除当前字符并立即进入插入模式。8. 可视模式 (Visual)进入方式v(按字符)、V(按行)、Ctrl v(按块/列)。常用操作先选区 -d(删除)、y(复制)。先选区 -或(代码批量缩进)。9. 文本对象 (Text Object)Vim 语法的精髓。公式操作(d/c/y) 范围(i/a) 对象(w/”/()/{})范围助记i(Inner)内部不带边界空格或括号本身。a(Around/All)周围/全部包含边界空格或括号本身。常用组合diw(DeleteInnerWord)删除当前单词。ci(ChangeInner)修改双引号内部内容。ci{/ci(修改函数体{}或参数列表()内的代码。ya{(YankAround{)复制整个函数块 (包含大括号本身)。10. 批量替换命令 ():s/old/new/(Substitute)替换当前行第一个。:s/old/new/g(Global)替换当前行所有匹配项。:%s/old/new/g(%代表全文)替换全文所有 (重构变量名常用)。:%s/old/new/gc(Confirm)替换全文且每次替换前弹窗确认 (更安全)。模块四多文件与工作区管理 (⭐ 多文件开发必备)11. Buffer、Window、Tab 的核心区别Buffer (缓冲区)加载到内存中的文件内容 (核心数据)。Window (窗口)显示 Buffer 的可视化区域。Tab (标签页)Window 的布局集合。12. Window 分屏操作 (最常用)Linux 终端下看 .h 头文件和 .c 源文件对比必备。所有的分屏操作都以Ctrl w(Window) 打头。Ctrl w v(Vertical)垂直分屏(左右布局等价命令:vs Vertical Split)。Ctrl w s(Split)水平分屏(上下布局等价命令:sp Split)。Ctrl w w(Window)在分屏窗口间循环切换。Ctrl w h/j/k/l按照方向键切换窗口。Ctrl w 让所有窗口大小平均。13. Buffer 后台管理:ls(List)列出当前后台打开的所有文件。:bn(BufferNext)切换到下一个 Buffer。:bp(BufferPrevious)切换到上一个 Buffer。:b {部分文件名}模糊匹配切换 Buffer。14. Tab 标签页操作:tabe {filename}(TabEdit)在新标签页打开文件。gt(GoTab)向右切换到下一个标签页。gT向左切换到上一个标签页。:tabclose关闭当前标签页。模块五进阶机制15. 寄存器 (Register)Vim 的复制/粘贴依赖寄存器默认使用无名寄存器。Vim 有 26 个有名寄存器a到z。指定寄存器复制ayiw(把当前单词复制到 a 寄存器)。指定寄存器粘贴ap(把 a 寄存器的内容粘贴出来)。查看寄存器:reg(Registers 查看所有):reg a(查看 a)。模块六附录16. 常见易错点纠正0和^0是绝对的第1列^是代码起点的非空格字符。$和g_$是绝对行尾 (可能包含空格)g_是最后一个有效代码字符。w和Wfoo-bar用w(word) 算 3 个词用W(WORD) 算 1 个整体。c的本质c(Change) 不是单纯的删除它是Delete Insert用来“改”东西。%s/a/b/g的g%代表全文范围结尾的g代表“一行内如果有多个匹配全部替换(Global in line)”。17. 一页速查表 (含助记词)场景快捷键命令助记高频跳转Ctrlo,CtrliOlder 后退 /Inewer 前进翻页移动Ctrld,CtrluDown 向下 /Up 向上代码搜寻*,/,n,NnNext 下一个函数定义Ctrl],CtrlttTag pop 跳出标签精准移动w,b,f,tWord 词 /Back 退 /Find 找 /Till 直到神级修改ci,ci{,diwChangeInner /DeleteInner快速编辑cw,yy,pChangeWord /Yank 复制 /Put 粘贴分屏比对:vs,:spVerticalSplit 竖分 /Split 横分批量替换:%s/a/b/gSubstitute 替换 /Global 行内全局可视选区v,V,CtrlvVisual 可视化模式