vim ¶
Vim 编辑器使用 ¶
基本模式 ¶
- 使用
vim打开文件后,默认进入 命令行模式(也称普通模式 / Normal 模式)。 - 编辑模式下按
Esc可返回命令行模式。
一、命令行模式 —— 保存与退出 ¶
| 命令 | 说明 |
|---|---|
:w |
保存文件 |
:w! |
强制保存 |
:q |
未修改时退出 |
:q! |
修改后不保存,强制退出 |
:wq |
保存并退出 |
:wq! |
强制保存并退出 |
:x |
保存并退出(仅当有修改时写入,等同于 :wq) |
ZZ |
保存并退出(命令行模式下直接按大写 ZZ) |
ZQ |
不保存强制退出(等同于 :q!) |
二、进入编辑模式(插入) ¶
| 命令 | 说明 |
|---|---|
i |
在当前字符之前插入(光标前) |
I |
在行首插入 |
a |
在当前字符之后插入(光标后) |
A |
在行尾插入 |
o |
在下一行插入(另起一行) |
O |
在上一行插入 |
s |
删除当前字符并进入插入模式 |
S |
删除当前行并进入插入模式 |
cc |
删除当前行并进入插入模式(同 S) |
C |
删除光标位置到行尾的内容并进入插入模式 |
三、光标移动(命令行模式) ¶
基本移动 ¶
| 按键 | 说明 |
|---|---|
h |
左移一个字符 |
j |
下移一行 |
k |
上移一行 |
l |
右移一个字符 |
0 |
移动到行首(数字零) |
^ |
移动到行首第一个非空字符 |
$ |
移动到行尾 |
gg |
移动到文件第一行 |
G |
移动到文件最后一行 |
:n 或 ngg |
移动到第 n 行(例如 :10 或 10gg) |
w |
移动到下一个单词的词首 |
b |
移动到上一个单词的词首 |
e |
移动到当前/下一个单词的词尾 |
H |
移动到屏幕顶部 |
M |
移动到屏幕中间 |
L |
移动到屏幕底部 |
翻页 ¶
| 按键 | 说明 |
|---|---|
Ctrl + f |
向下翻一页(forward) |
Ctrl + b |
向上翻一页(backward) |
Ctrl + d |
向下翻半页(down) |
Ctrl + u |
向上翻半页(up) |
四、删除、复制、粘贴 ¶
删除(配合移动命令使用) ¶
| 命令 | 说明 |
|---|---|
x |
删除光标所在字符 |
X |
删除光标前一个字符 |
dd |
删除当前行 |
d + 移动键 |
删除到指定位置,如 dw(删除到下一个单词词首)、d$(删除到行尾)、d0(删除到行首) |
D |
删除光标位置到行尾(同 d$) |
dgg |
删除光标到文件开头 |
dG |
删除光标到文件末尾 |
ndd |
删除从当前行开始的 n 行(如 3dd 删除 3 行) |
复制(yank) ¶
| 命令 | 说明 |
|---|---|
yy |
复制当前行 |
nyy |
复制从当前行开始的 n 行(如 3yy) |
y + 移动键 |
复制到指定位置,如 yw(复制一个单词)、y$(复制到行尾) |
Y |
复制当前行(等同于 yy) |
粘贴 ¶
| 命令 | 说明 |
|---|---|
p |
在光标之后粘贴 |
P |
在光标之前粘贴 |
五、撤销与重做 ¶
| 命令 | 说明 |
|---|---|
u |
撤销上一步操作 |
Ctrl + r |
重做(撤销撤销) |
U |
撤销对当前行的所有修改(恢复该行到最初状态) |
六、查找与替换 ¶
查找 ¶
| 命令 | 说明 |
|---|---|
/pattern |
向下查找 pattern |
?pattern |
向上查找 pattern |
n |
查找下一个匹配项(沿查找方向) |
N |
查找上一个匹配项(反向) |
* |
向下查找光标所在单词 |
# |
向上查找光标所在单词 |
:nohl |
取消高亮显示(nohlsearch) |
替换(:s 命令) ¶
| 命令 | 说明 |
|---|---|
:s/old/new/ |
替换当前行第一个 old 为 new |
:s/old/new/g |
替换当前行所有 old 为 new |
:n,m s/old/new/g |
替换第 n 行到第 m 行所有的 old 为 new |
:%s/old/new/g |
替换整个文件所有 old 为 new |
:%s/old/new/gc |
替换整个文件,但每次替换前询问确认 |
:%s/^/xxx/g |
在每行行首添加 xxx |
:%s/$/xxx/g |
在每行行尾添加 xxx |
七、多文件操作 ¶
| 命令 | 说明 |
|---|---|
:e filename |
在当前窗口打开新文件 |
:w filename |
另存为 filename |
:bn |
切换到下一个缓冲区(文件) |
:bp |
切换到上一个缓冲区(文件) |
:ls |
列出所有打开的文件缓冲区 |
:b n |
切换到编号为 n 的缓冲区 |
:bd |
删除当前缓冲区(关闭文件) |
八、分屏操作 ¶
| 命令 | 说明 |
|---|---|
:sp filename |
水平分屏(上下) |
:vsp filename |
垂直分屏(左右) |
Ctrl + w + h/j/k/l |
在分屏间切换(左/下/上/右) |
Ctrl + w + = |
均匀分配各屏尺寸 |
Ctrl + w + - |
减小当前屏高度 |
Ctrl + w + + |
增大当前屏高度 |
:only |
只保留当前屏,关闭其他分屏 |
九、常用设置(.vimrc 中配置) ¶
| 命令 | 说明 |
|---|---|
:set nu / :set number |
显示行号 |
:set nonu |
隐藏行号 |
:set hlsearch |
开启搜索高亮 |
:set nohlsearch |
关闭搜索高亮 |
:set autoindent |
开启自动缩进 |
:set tabstop=4 |
设置 Tab 为 4 个空格宽度 |
:set expandtab |
将 Tab 转换为空格 |
:syntax on |
开启语法高亮 |
:set paste |
进入粘贴模式(避免自动缩进干扰) |
:set nopaste |
退出粘贴模式 |
十、快速记忆口诀 ¶
| 场景 | 口诀 |
|---|---|
| 保存退出 | :wq / ZZ |
| 不保存退出 | :q! / ZQ |
| 插入位置 | i 前 a 后,o 下 O 上,I 行首 A 行尾 |
| 删除、复制、粘贴 | d 删 y 拷 p 粘,dd 删行 yy 拷行 |
| 撤销重做 | u 撤销 Ctrl+r 重做 |
| 查找替换 | / 查找 :%s/old/new/g 全局替换 |
| 移动 | h 左 j 下 k 上 l 右,gg 头 G 尾 |