Vim 核心操作笔记
2026/6/26 2:43:58 网站建设 项目流程

🐧 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}前挨着的一个字符(直到…)。
  • ;:正向重复上一次的ft
  • ,:反向重复上一次的ft

模块三:高效代码编辑与重构 (⭐ 核心生产力)

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. 常见易错点纠正

  1. 0^0是绝对的第1列;^是代码起点的非空格字符。
  2. $g_$是绝对行尾 (可能包含空格);g_是最后一个有效代码字符。
  3. wWfoo-barw(word) 算 3 个词,用W(WORD) 算 1 个整体。
  4. c的本质c(Change) 不是单纯的删除,它是Delete + Insert,用来“改”东西。
  5. %s/a/b/gg%代表全文范围,结尾的g代表“一行内如果有多个匹配,全部替换(Global in line)”。

17. 一页速查表 (含助记词)

场景快捷键命令助记
高频跳转Ctrl+o,Ctrl+iOlder 后退 /Inewer 前进
翻页移动Ctrl+d,Ctrl+uDown 向下 /Up 向上
代码搜寻*,/,n,Nn=Next 下一个
函数定义Ctrl+],Ctrl+tt=Tag 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,Ctrl+vVisual 可视化模式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询