✨ 前言:Linux学习打卡第四天!今天正式解锁了Vim编辑器,这个被称为“编辑器之神”的工具,初学时确实让人头大,但掌握了模式切换和核心命令后,就能感受到它的高效与强大。这篇博客整理了今天学习的Vim核心知识点,全程图文结合+实操示例,适合Linux新手快速入门,也方便自己后续复习。
一、Vim的三大工作模式
Vim的核心设计理念是模式化操作,这也是它和nano等编辑器最大的区别。理解这三种模式的切换,是掌握Vim的第一步:
- 命令模式(默认):打开文件后默认进入,只能执行快捷键(如复制、删除、移动光标),无法直接输入文字。
- 输入模式:用于编辑文本,输入的内容会直接显示在文件中。
- 底线命令模式:用于执行保存、退出、查找替换等全局操作。
模式切换关系图
#mermaid-svg-nkDOFJCl6PfL2Uw2{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .error-icon{fill:#552222;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .marker.cross{stroke:#333333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 p{margin:0;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .cluster-label text{fill:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .cluster-label span{color:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .cluster-label span p{background-color:transparent;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .label text,#mermaid-svg-nkDOFJCl6PfL2Uw2 span{fill:#333;color:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .node rect,#mermaid-svg-nkDOFJCl6PfL2Uw2 .node circle,#mermaid-svg-nkDOFJCl6PfL2Uw2 .node ellipse,#mermaid-svg-nkDOFJCl6PfL2Uw2 .node polygon,#mermaid-svg-nkDOFJCl6PfL2Uw2 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .rough-node .label text,#mermaid-svg-nkDOFJCl6PfL2Uw2 .node .label text,#mermaid-svg-nkDOFJCl6PfL2Uw2 .image-shape .label,#mermaid-svg-nkDOFJCl6PfL2Uw2 .icon-shape .label{text-anchor:middle;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .rough-node .label,#mermaid-svg-nkDOFJCl6PfL2Uw2 .node .label,#mermaid-svg-nkDOFJCl6PfL2Uw2 .image-shape .label,#mermaid-svg-nkDOFJCl6PfL2Uw2 .icon-shape .label{text-align:center;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .node.clickable{cursor:pointer;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .arrowheadPath{fill:#333333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nkDOFJCl6PfL2Uw2 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nkDOFJCl6PfL2Uw2 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nkDOFJCl6PfL2Uw2 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .cluster text{fill:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .cluster span{color:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nkDOFJCl6PfL2Uw2 rect.text{fill:none;stroke-width:0;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .icon-shape,#mermaid-svg-nkDOFJCl6PfL2Uw2 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .icon-shape p,#mermaid-svg-nkDOFJCl6PfL2Uw2 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .icon-shape rect,#mermaid-svg-nkDOFJCl6PfL2Uw2 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nkDOFJCl6PfL2Uw2 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nkDOFJCl6PfL2Uw2 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nkDOFJCl6PfL2Uw2 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
输入 i/a/o
按 ESC 键
输入 :
命令以回车结束
输入 :wq
打开文件: vi filename
命令模式
输入模式
底线命令模式
保存并退出
二、命令模式 → 输入模式:6种进入方式
在命令模式下,通过不同的快捷键可以在不同位置进入输入模式,大大提高编辑效率:
| 命令模式 | i | 在当前光标位置进入输入模式 |
| 命令模式 | a | 在当前光标位置之后进入输入模式 |
| 命令模式 | I | 在当前行的开头,进入输入模式 |
| 命令模式 | A | 在当前行的结尾,进入输入模式 |
| 命令模式 | o | 在当前光标下一行进入输入模式 |
| 命令模式 | O | 在当前光标上一行进入输入模式 |
| 输入模式 | esc | 任何情况下输入 esc 都能回到命令模式 |
三、命令模式:光标移动与文本操作
命令模式是Vim的核心,所有高效的文本操作都在这里完成。
1. 光标移动
| 命令模式 | 上箭头 / k | 向上移动光标 |
| 命令模式 | 下箭头 / j | 向下移动光标 |
| 命令模式 | 左箭头 / h | 向左移动光标 |
| 命令模式 | 右箭头 / l | 向后移动光标 |
| 命令模式 | 0 | 移动光标到当前行的开头 |
| 命令模式 | $ | 移动光标到当前行的结尾 |
| 命令模式 | PageUp (PgUp) | 向上翻页 |
| 命令模式 | PageDown (PgDn) | 向下翻页 |
| 命令模式 | / | 进入搜索模式 |
| 命令模式 | n | 向下继续搜索 |
| 命令模式 | N | 向上继续搜索 |
2. 复制、删除与撤销
| 命令模式 | dd | 删除光标所在行的内容 |
| 命令模式 | ndd | n是数字,表示删除当前光标向下n行 |
| 命令模式 | yy | 复制当前行 |
| 命令模式 | nyy | n是数字,复制当前行和下面的n行 |
| 命令模式 | p | 粘贴复制的内容 |
| 命令模式 | u | 撤销修改 |
| 命令模式 | Ctrl + r | 反向撤销修改 |
| 命令模式 | gg | 跳到首行 |
| 命令模式 | G | 跳到行尾 |
| 命令模式 | dG | 从当前行开始,向下全部删除 |
| 命令模式 | dgg | 从当前行开始,向上全部删除 |
| 命令模式 | d$ | 从当前光标开始,删除到本行的结尾 |
| 命令模式 | d0 | 从当前光标开始,删除到本行的开头 |
四、底线命令模式:保存、退出与全局设置
在命令模式下输入 : 即可进入底线命令模式,执行全局操作:
| 底线命令模式 | :wq | 保存并退出 |
| 底线命令模式 | :q | 仅退出(文件未修改时可用) |
| 底线命令模式 | :q! | 强制退出(不保存修改) |
| 底线命令模式 | :w | 仅保存 |
| 底线命令模式 | :set nu | 显示行号 |
| 底线命令模式 | :set paste | 设置粘贴模式(避免粘贴时自动缩进混乱) |
五、学习总结与感悟
今天的学习让我深刻体会到Vim“编辑器之神”的称号并非浪得虚名。虽然一开始被各种模式和快捷键搞得晕头转向,但当我理解了“模式切换”的核心逻辑后,就发现它的设计其实非常高效。
- 模式化思维:命令模式负责高效操作,输入模式负责精准编辑,底线模式负责全局控制,各司其职。
- 高效快捷键:所有操作都可以通过键盘完成,无需鼠标,熟练后编辑速度会大幅提升。
- 新手避坑:永远记得,当你不知道自己在哪个模式时,按一下 ESC 键,它总能把你带回安全的命令模式。
Vim的学习是一个循序渐进的过程,今天掌握的只是冰山一角。明天我计划学习更多高级功能,如多文件编辑、宏录制等,继续向“Vim大师”的目标前进!
核心命令速记(收藏备用)
# 模式切换
i/a/o/I/A/O # 从命令模式进入输入模式
ESC # 从任何模式回到命令模式
: # 从命令模式进入底线命令模式
# 光标移动
k/j/h/l # 上下左右
0/$ # 行首/行尾
gg/G # 文件首/尾
# 文本操作
dd/yy/p # 删除/复制/粘贴
u/Ctrl+r # 撤销/反撤销
# 保存退出
:wq # 保存并退出
:q! # 强制退出不保存
🔗 相关推荐:Linux学习打卡系列将持续更新,新手可关注,一起从0到1吃透Linux命令行~




