Vim 编辑器

Vim(Vi IMproved)是 Linux 世界里几乎每台服务器都自带的编辑器。当你 SSH 到一台没图形界面的远程服务器,要改配置文件时,Vim 几乎是唯一选择。它的学习曲线出名地陡峭("如何退出 Vim"是个网络名梗),但掌握几个核心操作就够日常用了。这一篇我们只讲最实用的 20%。

1. 核心理念:模式

Vim 和普通编辑器(记事本、VS Code)最大的区别是模式——同一个键在不同模式下含义完全不同。这是它高效的根本,也是新手崩溃的原因。

# 打开 Vim
vim file.txt                # 打开(不存在就新建)
vim +20 file.txt            # 打开并跳到第 20 行
vim +/keyword file.txt      # 打开并跳到第一个 keyword
vim -R file.txt             # 只读模式(view 命令同理)

# Vim 的核心理念:模式(mode)
#   普通模式(Normal)  - 默认,按键是命令,不输入文字
#   插入模式(Insert)  - 像普通编辑器,输入文字
#   命令模式(Command) - 输入冒号开头的命令(:w :q)
#   可视模式(Visual)  - 选中文本块(类似鼠标拖选)

# 刚打开是普通模式。按 i 进入插入模式开始打字。
# 任何时候按 Esc 回到普通模式(你的"安全键")。

新手记住一条铁律:迷路了就按 Esc。Esc 把你带回普通模式,这是 Vim 的"安全屋"。普通模式下按 u 撤销、:q! 强制退出,无论如何都不会卡死。

2. 移动:把右手放在 hjkl 上

Vim 不需要鼠标也不需要方向键,移动全靠键盘。核心是 hjkl 四个键:

# 普通模式下的移动(保持双手在主键盘区)

# 基本移动(hjkl,右手食指放在 j 上)
#   h 左  j 下  k 上  l 右
#   (记忆:j 像钩子向下,k 像向上指)

# 词级移动
w       下一个词开头(word)
b       上一个词开头(back)
e       当前/下一个词结尾(end)

# 行内移动
0       行首(绝对)
^       第一个非空字符(行首)
$       行尾(注意和正则的行尾一致)

# 文档级移动
gg      文档开头
G       文档结尾
5G      跳到第 5 行
Ctrl+G  显示当前行号信息

# 屏幕级移动
Ctrl+f  下一页(forward)
Ctrl+b  上一页(backward)
H       屏幕顶(High)
M       屏幕中(Middle)
L       屏幕底(Low)

记忆法:h 在最左(向左),l 在最右(向右),j 像一个向下的钩子,k 像向上翘。开始会很别扭,坚持两天形成肌肉记忆后比方向键快得多。

高频组合:数字 + 移动 = 重复。5j 下移 5 行,3w 跳 3 个词,2dd 删 2 行。这是 Vim 高效的精髓。

3. 编辑:进入插入模式

普通模式下按 i / a / o 进入插入模式,才能像普通编辑器一样输入文字。

# 插入模式:进入插入(在普通模式下按)
i       在光标前插入(insert)
a       在光标后插入(append)
I       在行首插入
A       在行尾追加
o       下方新开一行并进入插入(open)
O       上方新开一行并进入插入

# 删除与修改
x       删光标所在字符
dd      删整行(2dd 删两行)
dw      删一个词
d$      删到行尾
D       删到行尾(等于 d$)
cw      改一个词(删词后进入插入)
cc      改整行
r       替换一个字符(不进入插入)
u       撤销(undo)
Ctrl+r  重做(redo)

# 复制与粘贴(在 Vim 里叫 yank 和 put)
yy      复制整行(yank,2yy 复制两行)
yw      复制一个词
y$      复制到行尾
p       粘贴到光标后(小写)
P       粘贴到光标前(大写)
dd + p  = 剪切粘贴(移动行)

# 重复
.       重复上一次修改命令(超有用,豆操作)

关键操作速记:

4. 搜索与替换

# 搜索
/keyword         向下搜索 keyword(回车确认)
?keyword         向上搜索
n                下一个匹配(Next)
N                上一个匹配
*                搜索光标所在的词(向下)
#                搜索光标所在的词(向上)

# 搜索时设置高亮忽略大小写
:set hlsearch    # 高亮所有匹配
:set ignorecase  # 忽略大小写
:set smartcase   # 智能大小写(全小写时忽略,有大写时区分)

# 替换(substitute)
:s/old/new/         当前行第一个 old 换成 new
:s/old/new/g        当前行所有 old 换成 new(g=global)
:%s/old/new/g       全文档替换
:%s/old/new/gc      全文档替换,每个确认(c=confirm)
:5,10s/old/new/g    第 5 到 10 行替换
:%s/old/new/gi      不分大小写

最常用的替换是 :%s/旧/新/g——全文档替换。:%s/旧/新/gcc(confirm)每个都问一下,适合谨慎操作。

5. 保存与退出(最关键!)

"如何退出 Vim"是个出圈的名梗,真的很多人卡在这里:

# 保存与退出(命令模式,以冒号开头)

:w               保存(write)
:q               退出(quit)
:wq              保存并退出(等价 Shift+Z+Z 或 :x)
:q!              强制退出不保存(! = 强制)
:w!              强制保存(只读文件可能用 sudo 才行)

# 多文件
:e other.txt     编辑另一个文件
:w newname.txt   另存为
:bn              下一个文件(buffer next)
:bp              上一个文件
:bd              关闭当前文件(buffer delete)

# 常见新手困境:改完不知道怎么退出!
# 记住这个口诀:
#   1. 按 Esc 回到普通模式
#   2. 输入 :wq 回车 保存退出
#   3. 不想保存就 :q!
# 网上梗 "如何退出 Vim" 不是开玩笑,真的很多人卡住

记住口诀:Esc → :wq → 回车。改坏了不想保存就 :q!。从此再也不会被困在 Vim 里。

6. 可视模式:选中操作

可视模式相当于鼠标拖选,选中后可以做批量操作:

# 可视模式(选中文本)
v           进入字符可视模式(逐字选)
V           进入行可视模式(逐行选)
Ctrl+v      进入块可视模式(矩形选,批量注释神器)

# 选中后可以:
d           删除选区
y           复制选区
>           缩进右移
<           缩进左移
~           大小写反转

# 经典应用:批量加注释
# 1. Ctrl+v 进入块选择
# 2. 上下方向键选要注释的行
# 3. Shift+i 输入 # 或 //
# 4. 按 Esc 等一下,所有选中的行都加上注释了

块可视模式(Ctrl+v)是批量注释/取消注释的神器,这是 VS Code 也要装插件才能做的事,Vim 原生支持。

7. 配置 .vimrc 让 Vim 更友好

默认的 Vim 比较朴素,写几行配置就能变得好用得多:

# ~/.vimrc:Vim 配置文件(让 Vim 更好用)

# 创建文件:vim ~/.vimrc,加入下面内容

set number              " 显示行号
set relativenumber      " 相对行号(方便 5j 这种移动)
set tabstop=4           " Tab 显示宽度
set shiftwidth=4        " 缩进宽度
set expandtab           " Tab 转空格
set autoindent          " 自动缩进
set smartindent         " 智能缩进
set hlsearch            " 搜索高亮
set ignorecase          " 忽略大小写
set smartcase           " 智能大小写
set wrap                " 自动折行
set cursorline          " 高亮当前行
syntax on               " 语法高亮
filetype plugin indent on  " 文件类型检测

# 装插件(进阶):vim-plug 或 packer
# 现代替代:NeoVim(更强大,LSP 支持)

把这段配置保存到 ~/.vimrc,立刻就有行号、语法高亮、智能缩进。每次打开 Vim 自动生效。

8. 速查表(必备 20 个操作)

9. Vim 的现代替代

Vim 的理念虽然好,但配置成本高。如果觉得原生 Vim 太朴素,有几个选择:

但即便如此,Vim 的基本操作还是要会——SSH 进出服务器、Git 提交信息、Docker exec 进容器,这些场景里只有 Vim/nano 可用。它是工程师的"急救技能"。

小结

这一篇你学会了 Vim 的核心:四种模式、hjkl 移动、i/a/o 进入插入、dd/yy/p 编辑、/搜索、:s 替换、:wq 保存退出。坚持用一周形成肌肉记忆,你会发现它比鼠标快得多。下一篇讲远程登录——SSH。

← 上一篇 Linux 环境变量

下一篇 SSH 远程连接

✈️💬