系统学习 学习路径总入口:先选领域,再建立模型,最后用故障演练验证

Vim 基础:四种模式、打开保存退出、移动编辑与基础搜索

适用场景

在服务器、容器或 SSH 会话里改配置,图形编辑器不可用或不值得开。Vim 几乎预装在 Linux/macOS 上,也能在 Windows 和 WSL 里使用;先练熟普通模式、插入模式和退出方式,再学移动与操作符,否则会在“退不出去”和“误改文件”上耗时间。文本对象、寄存器、宏和插件见进阶与配置页,纯 POSIX vi 见 vi。

四种模式

Vim 的按键含义取决于当前模式。启动后是普通模式,字母都是命令;只有插入模式才把按键当文字。任何时候按 Esc(或 Ctrl+[)回到普通模式。

普通模式 ──i / a / o / O──▶ 插入模式 ──Esc──▶ 普通模式
   │
   ├──v / V / Ctrl+v──▶ 可视模式 ──Esc──▶ 普通模式
   └──: / ?───────────▶ 命令行模式 ──执行后返回──▶ 普通模式
模式 进入方式 主要用途 回到普通模式
普通模式 启动默认;任意模式按 Esc 移动、删除、复制、执行操作符 —
插入模式 i 前、a 后、o 下方新行、O 上方新行 输入文本 Esc 或 Ctrl+[
可视模式 v 字符、V 行、Ctrl+v 块 选中后执行 d/y/c/> 等 Esc
命令行模式 : 执行 ex;/ 和 ? 搜索 保存、替换、设置、搜索 执行后自动返回

打开、保存与退出

命令行启动时可以带行号、搜索位置或只读标志;进入后用 ex 命令保存和退出。:wq 无条件写,:x 和 ZZ 只在有修改时写,:q 遇到未保存修改会拒绝。

vim notes.txt              # 打开或新建文件
vim +42 notes.txt          # 跳到第 42 行
vim +/timeout notes.txt    # 定位到首个匹配
vim -R /etc/hosts          # 只读打开
命令 行为
:w 保存当前缓冲区;:w other.txt 另存
:q / :q! 有修改时拒绝退出 / 放弃修改退出
:wq / :x 保存退出 / 有修改才写入并退出
ZZ / ZQ 有修改才保存退出 / 放弃修改退出

移动与编辑

普通模式下用 hjkl 移动,w/b/e 按词跳,gg/G 到文件首尾,Ctrl+d/u 翻半页。数字可前置成计数,例如 5j 下移 5 行。

h j k l     左 下 上 右
w / b / e   下个词首 / 上个词首 / 词尾
0 / ^ / $   行首 / 首个非空字符 / 行尾
gg / G      文件首 / 文件尾
Ctrl+d / u  下半页 / 上半页
{ / } / %   上/下一段 / 匹配括号
i / a / I / A   光标前 / 后 / 行首 / 行尾插入
o / O           下方 / 上方新开一行并插入
x               删除光标处字符
dd / yy / p     删除整行 / 复制整行 / 粘贴到光标后
dw / yw         删除 / 复制一个单词
D / C           删除 / 修改到行尾
u / Ctrl+r      撤销 / 重做
.               重复上一次修改

编辑遵循“操作符 + 动作/文本对象”的组合;ciw、di( 这类文本对象在进阶页展开。i 在光标前,a 在光标后,I/A 到行首/行尾,o/O 在当前行下/上新建一行。

gg / 5dd / u / :wq   移到文件头、删 5 行、撤销、保存退出

基础搜索

/ 向下、? 向上,回车后 n/N 沿同方向继续或反向。搜索默认从文件尾绕回开头(wrapscan),大文件里连续按 n 要注意是否已经绕回,:set nowrapscan 可关闭绕回。

/pattern    向下搜索
?pattern    向上搜索
n / N       下一个 / 上一个匹配
:noh        清除搜索高亮
:set hlsearch incsearch   高亮与增量搜索

易错点

相关条目

参考链接

读完自测

  1. 改了文件后 :q 退出失败,屏幕上的 E37 是什么意思?怎样放弃修改退出?
  2. dd、yy、p 各做什么?为什么有时 p 粘贴到当前行下方,有时插在光标后?
  3. 用 /error 搜索后,n 和 N 分别往哪走?到达文件尾再按 n 会怎样?
答案
  1. E37 表示缓冲区有未保存修改,Vim 拒绝退出;用 :q! 或普通模式 ZQ 放弃修改,用 :wq 保存后退出。
  2. dd 删除整行并写入寄存器,yy 复制整行,p 粘贴;整行内容按行粘贴到当前行下方,字符级内容粘贴到光标之后,P 则粘到上方或光标前。
  3. n 沿原搜索方向继续,N 反向;默认 wrapscan 开启,到文件尾后会绕回文件头继续匹配,可用 :set nowrapscan 关闭。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令