Hana's Blog
Vim 详细使用教程:从入门到高频操作Blur image

如果你经常在 Linux 服务器、终端或 SSH 环境里工作,Vim 仍然是最值得掌握的编辑器之一。

它的学习曲线确实比普通文本编辑器陡,但一旦掌握核心操作,你会明显感受到两个变化:

  • 手不用频繁离开键盘
  • 编辑速度和文本控制力都会上一个台阶

这篇教程按“先能独立编辑文件,再逐步提升效率”的顺序来讲,尽量把高频操作一次讲清楚。

1. Vim 是什么,适合什么场景#

Vim 是一个以键盘操作为核心的文本编辑器,尤其适合:

  • 远程服务器上快速改配置
  • 在终端里直接编辑代码或脚本
  • 处理大量文本、日志、配置文件
  • 希望减少鼠标依赖的人

如果你只是偶尔改一两行文本,图形编辑器当然更直观;但如果你经常 SSH 到远端机器,Vim 基本属于必备技能。

2. 安装与启动#

Ubuntu / Debian:

sudo apt update
sudo apt install -y vim
bash

CentOS / RHEL:

sudo yum install -y vim
bash

macOS (Homebrew):

brew install vim
bash

查看版本:

vim --version
bash

打开文件:

vim filename.txt
bash

如果文件不存在,保存时会自动创建。

3. 先理解 Vim 的核心:模式#

Vim 最重要的概念不是命令本身,而是模式

3.1 普通模式#

打开 Vim 后默认进入普通模式。
这个模式主要用于:

  • 移动光标
  • 删除、复制、粘贴
  • 搜索
  • 跳转
  • 执行命令

你可以把普通模式理解成“控制模式”。

3.2 插入模式#

插入模式就是正常输入文字的模式。

常见进入方式:

  • i:在光标前插入
  • a:在光标后插入
  • I:跳到行首并插入
  • A:跳到行尾并插入
  • o:在下一行新开一行并插入
  • O:在上一行新开一行并插入

退出插入模式:

  • Esc

3.3 可视模式#

可视模式用于选中文本。

  • v:字符级选择
  • V:整行选择
  • Ctrl+v:块选择(列编辑非常有用)

3.4 命令行模式#

在普通模式下输入 : 进入命令行模式,用于保存、退出、替换、设置选项等。

例如:

:w
:q
:wq
vim

4. 第一次使用的最小闭环#

你至少先记住这几步:

  1. vim test.txt 打开文件
  2. i 进入插入模式
  3. 输入内容
  4. Esc 回到普通模式
  5. 输入 :wq 保存并退出

如果你不想保存:

:q!
vim

如果文件没改动,直接退出:

:q
vim

5. 光标移动:真正决定效率的部分#

很多人学 Vim 只记编辑命令,但真正拉开差距的是移动。

5.1 基础移动#

  • h:左
  • j:下
  • k:上
  • l:右

这四个键是最基础的移动方式。

5.2 按单词移动#

  • w:跳到下一个单词开头
  • b:跳到上一个单词开头
  • e:跳到当前或下一个单词末尾

如果你在代码里频繁移动,w b e 比方向键高效很多。

5.3 按行移动#

  • 0:跳到行首
  • ^:跳到本行第一个非空字符
  • $:跳到行尾

5.4 按屏幕和文档移动#

  • gg:跳到文件开头
  • G:跳到文件末尾
  • :10:跳到第 10 行
  • 10G:跳到第 10 行
  • Ctrl+d:向下翻半页
  • Ctrl+u:向上翻半页
  • Ctrl+f:向下翻一页
  • Ctrl+b:向上翻一页

5.5 行内快速跳转#

  • f{字符}:向右找到本行中下一个指定字符
  • F{字符}:向左找到本行中上一个指定字符
  • t{字符}:跳到目标字符前一位
  • T{字符}:跳到目标字符后一位
  • ;:重复上一次 f/F/t/T
  • ,:反向重复

例如你想跳到这一行下一个 ),直接按:

f)
text

6. 编辑文本的高频操作#

6.1 删除#

  • x:删除当前字符
  • dd:删除当前整行
  • dw:删除到下一个单词
  • d$:删除到行尾
  • d0:删除到行首

6.2 复制与粘贴#

  • yy:复制当前行
  • yw:复制一个单词
  • p:在光标后粘贴
  • P:在光标前粘贴

6.3 修改#

change 系列本质上是“删除后立刻进入插入模式”。

  • cw:修改一个单词
  • cc:修改整行
  • c$:从当前位置改到行尾

6.4 撤销与重做#

  • u:撤销
  • Ctrl+r:重做

6.5 重复上一次操作#

  • .:重复上一次修改

这是 Vim 里非常强的一个键。

例如你刚执行过一次 cw 把某个变量名改掉,接着移动到下一个变量,按 . 就能重复同样的修改动作。

7. 数字前缀:批量操作的关键#

Vim 大量命令都支持“数字 + 动作”。

例如:

  • 3j:向下移动 3 行
  • 5x:删除 5 个字符
  • 3dd:删除 3 行
  • 2yy:复制 2 行
  • 4w:向前跳 4 个单词

这个机制很重要,因为它能把重复操作压缩成一个动作。

8. 文本对象:Vim 真正强大的地方#

文本对象的思路是:不是按字符编辑,而是按语义结构编辑

8.1 单词对象#

  • ciw:修改当前单词
  • diw:删除当前单词
  • yiw:复制当前单词

这里的 iwinner word

8.2 括号对象#

  • ci(:修改圆括号里的内容
  • di(:删除圆括号里的内容
  • yi(:复制圆括号里的内容

8.3 引号对象#

  • ci":修改双引号内内容
  • ci':修改单引号内内容
  • 输入 ci 后再接反引号键:修改反引号内内容

例如:

name = "hana_blog"
python

光标放在引号内部任意位置,按:

ci"
text

就会直接清空引号内内容并进入插入模式。

8.4 around 与 inner#

  • i:inside / inner,不包括边界
  • a:around,包括边界

例如:

  • ci":只改引号内部内容
  • ca":连引号一起替换

9. 可视模式:选中、缩进、批量编辑#

9.1 基础选择#

  • v 进入字符选择
  • V 进入行选择
  • 选中后按 d 删除、按 y 复制、按 > 缩进、按 < 反缩进

9.2 块选择#

Ctrl+v 进入块选择后,可以做列级编辑。

常见场景:

  • 同时给多行前面加注释
  • 同时删除多行开头的相同前缀
  • 做整列对齐

例如给多行前面加 #

  1. Ctrl+v 选中多行的第一列
  2. I
  3. 输入 #
  4. Esc

Vim 会把这段内容批量插入到所有选中的行前面。

10. 搜索与替换#

10.1 搜索#

向下搜索:

/keyword
text

向上搜索:

?keyword
text

搜索结果跳转:

  • n:下一个
  • N:上一个

10.2 高亮与取消高亮#

开启搜索高亮:

:set hlsearch
vim

取消当前高亮:

:nohlsearch
vim

10.3 替换#

替换当前行第一个匹配:

:s/old/new/
vim

替换当前行所有匹配:

:s/old/new/g
vim

替换全文所有匹配:

:%s/old/new/g
vim

替换全文并逐个确认:

:%s/old/new/gc
vim

这里的 c 表示 confirm。

11. 多文件与多窗口操作#

11.1 同时打开多个文件#

vim file1.txt file2.txt
bash

在 Vim 内切换缓冲区:

  • :bn:下一个 buffer
  • :bp:上一个 buffer
  • :ls:查看 buffer 列表
  • :b 2:跳到第 2 个 buffer

11.2 分屏#

水平分屏:

:split
vim

垂直分屏:

:vsplit
vim

打开指定文件:

:split another.txt
:vsplit another.txt
vim

窗口切换:

  • Ctrl+w 然后 h/j/k/l

关闭当前窗口:

:q
vim

11.3 标签页#

  • :tabnew
  • :tabnext
  • :tabprev
  • :tabclose

不过对很多人来说,buffer + split 已经够用了。

12. 寄存器:理解复制粘贴背后的机制#

Vim 的复制、删除内容其实会进入寄存器。

查看寄存器:

:registers
vim

常见寄存器:

  • ":默认寄存器
  • 0:最近一次复制内容
  • %:当前文件名
  • /:最近一次搜索内容

指定寄存器复制:

"ayy
text

表示把当前行复制到 a 寄存器。

a 寄存器粘贴:

"ap
text

如果你经常复制一段内容,期间又做了删除操作,寄存器会非常有用。

13. 宏:把重复编辑自动化#

宏适合处理“同一种编辑动作重复很多次”的场景。

13.1 录制宏#

按:

qa
text

表示开始录制到寄存器 a

完成操作后按:

q
text

结束录制。

13.2 执行宏#

执行一次:

@a
text

执行 10 次:

10@a
text

举例:如果你有很多格式相似的行,需要逐行插入固定前缀或做相同替换,宏会比手工操作快很多。

14. 实用命令汇总#

保存:

:w
vim

另存为:

:w newfile.txt
vim

退出:

:q
vim

保存并退出:

:wq
vim

强制退出不保存:

:q!
vim

显示行号:

:set number
vim

显示相对行号:

:set relativenumber
vim

开启语法高亮:

:syntax on
vim

15. 推荐的基础配置#

你可以先从一个最小 .vimrc 开始:

set number
set relativenumber
set tabstop=2
set shiftwidth=2
set expandtab
set autoindent
set hlsearch
set incsearch
set ignorecase
set smartcase
syntax on
vim

配置文件位置通常是:

  • Linux / macOS: ~/.vimrc

这套配置的作用分别是:

  • 显示绝对行号与相对行号
  • Tab 宽度设为 2
  • 用空格代替 Tab
  • 自动缩进
  • 搜索时高亮、增量显示
  • 搜索默认忽略大小写,但如果输入大写则大小写敏感

16. 新手最容易踩的坑#

16.1 忘记自己还在插入模式#

一旦发现快捷键都不生效,第一反应先按 Esc,回到普通模式再说。

16.2 不会退出#

这个几乎是每个 Vim 新手都踩过的坑。记住:

  • :q! 不保存退出
  • :wq 保存退出

16.3 只会用方向键#

如果一直依赖方向键,你会很难真正体会 Vim 的效率。
至少先强迫自己多用:

  • hjkl
  • w b e
  • 0 ^ $
  • gg G

16.4 把 Vim 当普通编辑器硬用#

Vim 的效率来自“动作组合”,不是单个命令。

比如下面这些都应该当成组合去理解:

  • ciw
  • d$
  • yi(
  • 3dd
  • :%s/old/new/gc

17. 一条推荐学习路径#

如果你不想一次记太多,可以按这个顺序学:

  1. 先学进入 / 退出插入模式:i a o Esc
  2. 再学保存退出::w :q :wq :q!
  3. 再学基础移动:hjkl w b 0 $ gg G
  4. 再学删除复制粘贴:x dd yy p u
  5. 再学高频组合:ciw dw cw .
  6. 最后学搜索替换、可视块、寄存器、宏

这样会比一次背完整命令表更容易真正用起来。

18. 结语#

Vim 最难的不是命令本身,而是接受它的编辑思维:

  • 普通模式负责控制
  • 插入模式只负责输入
  • 大部分高效操作都来自“动作 + 对象”的组合

当你开始习惯 ciwddp./:%s///gc 这类操作后,很多文本编辑任务会变得非常顺手。

如果你正在服务器上工作,最值得先练熟的不是全部功能,而是下面这组最小集合:

i  a  o  Esc
:wq  :q!
hjkl  w  b  0  $
dd  yy  p  u
/  n  N
ciw  cw  .
text

把这些练熟,再继续扩展到可视块、宏和寄存器,Vim 就会开始真正好用起来。

Vim 详细使用教程:从入门到高频操作
https://hana-blog.top/blog/vim-detailed-guide
Author 菊花花
Published at April 22, 2026
Comment seems to stuck. Try to refresh?✨