Vim 基础

1. Vim 的模式

Vim 有多个模式,最常用的是以下三种:

模式 说明 如何进入
普通模式 默认模式,用于移动光标、复制粘贴、删除等操作。 启动 Vim 时自动进入,或按 Esc 返回。
插入模式 用于输入文本。 iao 等键进入。
可视模式 用于选择文本块,然后进行复制、删除等操作。 v(字符选择)、V(行选择)进入。
命令行模式 用于执行保存、退出、搜索、替换等命令。 在普通模式下按 : 进入。

核心原则:大部分时间停留在普通模式,需要输入文本时切换到插入模式,输入完成后按 Esc 返回普通模式。


2. 启动与退出

命令 说明
vim filename 打开(或创建)文件并进入普通模式
:q 退出(如果文件未修改)
:q! 强制退出,不保存修改
:w 保存文件
:wq:xZZ 保存并退出
:e filename 打开另一个文件(在当前 Vim 中)

3. 光标移动(普通模式)

基本移动

按键 说明
h 左移一个字符
j 下移一行
k 上移一行
l 右移一个字符
0 移动到行首
^ 移动到行首第一个非空白字符
$ 移动到行尾
gg 移动到文件第一行
G 移动到文件最后一行
:n 跳转到第 n 行(如 :42

按词移动

按键 说明
w 跳到下一个单词开头
e 跳到当前或下一个单词结尾
b 跳到上一个单词开头

屏幕滚动

按键 说明
Ctrl+f 向下翻一页
Ctrl+b 向上翻一页
Ctrl+d 向下翻半页
Ctrl+u 向上翻半页
zz 将当前行置于屏幕中央

4. 编辑操作(普通模式)

进入插入模式

按键 说明
i 在光标前插入
a 在光标后插入
I 在行首插入
A 在行尾插入
o 在当前行下方新建一行并插入
O 在当前行上方新建一行并插入
s 删除当前字符并进入插入模式
S 删除当前行并进入插入模式

删除

按键 说明
x 删除光标所在字符
dd 删除当前行
d$ 删除从光标到行尾
d0 删除从光标到行首
dw 删除从光标到下一个单词开头
dG 删除从当前行到文件末尾
dgg 删除从当前行到文件开头

复制与粘贴

按键 说明
yy 复制当前行
y$ 复制从光标到行尾
yw 复制从光标到单词结尾
p 在光标后粘贴
P 在光标前粘贴

撤销与重做

按键 说明
u 撤销上一次操作
Ctrl+r 重做(撤销的撤销)

缩进

按键 说明
>> 向右缩进当前行
<< 向左缩进当前行
= 自动缩进(如 gg=G 自动缩进整个文件)

5. 查找与替换

查找

按键 说明
/pattern 向下查找 pattern
?pattern 向上查找 pattern
n 继续查找下一个(方向同上次)
N 继续查找上一个(反向)
* 向下查找光标所在的单词
# 向上查找光标所在的单词

替换

在命令行模式下使用 :s(substitute)命令:

命令 说明
:s/old/new/ 将当前行第一个 old 替换为 new
:s/old/new/g 将当前行所有 old 替换为 new
:%s/old/new/g 将整个文件所有 old 替换为 new
:%s/old/new/gc 替换前逐一询问确认
:10,20s/old/new/g 将第10行到第20行之间的所有 old 替换为 new

6. 可视模式

按键 说明
v 进入字符可视模式(移动光标选择字符)
V 进入行可视模式(选择整行)
Ctrl+v 进入块可视模式(选择矩形区域)
选中后按 d 删除,按 y 复制,按 p 粘贴,按 >< 缩进。

7. 多文件操作

命令 说明
:e filename 在当前窗口打开另一个文件
:ls 列出所有缓冲区(打开的文件)
:b n 跳转到缓冲区编号 n
:bnext:bn 切换到下一个缓冲区
:bprev:bp 切换到上一个缓冲区
:bd 删除当前缓冲区(关闭文件)
:sp filename 水平分割窗口并打开文件
:vsp filename 垂直分割窗口并打开文件
Ctrl+w w 在分割窗口间切换
Ctrl+w q 关闭当前分割窗口

8. 其他常用操作

按键/命令 说明
. 重复上一次修改操作
J 将下一行合并到当前行末尾
r 替换光标所在字符(后跟新字符)
R 进入替换模式(连续覆盖字符)
~ 切换光标下字符的大小写
Ctrl+g 显示当前文件名和行号
:set nu 显示行号
:set nonu 隐藏行号
:nohlsearch 取消搜索高亮
:!command 执行外部命令(如 :!ls

9. 配置文件(.vimrc)

Vim 的行为可以通过家目录下的 .vimrc 文件自定义。常用设置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
" 显示行号
set number

" 语法高亮
syntax on

" 自动缩进
set autoindent
set smartindent

" 制表符宽度
set tabstop=4
set shiftwidth=4
set expandtab " 将制表符转换为空格

" 搜索高亮
set hlsearch
set incsearch

" 启用鼠标
set mouse=a

10. 获取帮助

在 Vim 中,可以通过以下命令获取帮助:

命令 说明
:help 打开帮助主页面
:help topic 查看特定主题的帮助
:help w 查看 w 命令的帮助
:help usr_toc 查看用户手册目录

小贴士

  • 学习曲线:Vim 需要刻意练习,建议运行 vimtutor 命令(终端输入)完成交互式教程。
  • 不要依赖鼠标:尽量使用键盘操作,效率更高。
  • 组合命令:Vim 的命令可以组合,如 d2w 删除两个单词,y3j 复制向下三行。
  • 习惯性按 Esc:完成输入后及时返回普通模式。