Vim 完整快捷键
一、光标移动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| h/j/k/l 左/下/上/右(基本移动)
w/W 下一个单词开头(小写含标点,大写仅空格分割)
e/E 下一个单词结尾
b/B 上一个单词开头
0 行首(绝对)
^ 行首第一个非空字符
$ 行尾
gg 文件第一行
G 文件最后一行
:123 跳转到第123行
123G 跳转到第123行
% 跳转到匹配的括号() {} []
Ctrl+f/b 向下/向上翻页
Ctrl+d/u 向下/向上翻半页
H/M/L 屏幕顶部/中部/底部
|
二、插入模式
1
2
3
4
5
6
7
8
| i 在光标前插入
I 在行首插入
a 在光标后插入
A 在行尾插入
o 在当前行下方插入新行
O 在当前行上方插入新行
s 删除光标字符并插入
S 删除整行并插入
|
三、删除操作(重点)
1
2
3
4
5
6
7
8
9
10
11
12
13
| x 删除光标下字符
X 删除光标前字符
dd 删除(剪切)当前整行
dw 删除一个单词
D 删除光标到行尾的内容
d0 删除光标到行首的内容
dgg 删除到文件开头
dG 删除到文件结尾
ggdG 删除全部内容(推荐,最直观)
:%d 删除所有行(命令行模式)
:1,$d 删除第1行到最后一行
ggVGd 全选后删除
d5j 删除当前行及下方5行
|
四、复制粘贴
1
2
3
4
5
6
7
8
9
| yy 复制当前整行
yw 复制一个单词
y$ 复制到行尾
ygg 复制到文件开头
yG 复制到文件结尾
p 粘贴到光标后
P 粘贴到光标前
"ap 粘贴寄存器a的内容
"+p 从系统剪贴板粘贴
|
五、撤销与重做
1
2
3
4
5
6
| u 撤销上一次操作
Ctrl+r 重做
U 撤销对当前行的所有操作
. 重复上一次编辑操作
; 重复上一次字符查找
, 反向重复上一次字符查找
|
六、查找与替换
1
2
3
4
5
6
7
8
9
10
11
| /pattern 向下搜索pattern
?pattern 向上搜索pattern
n 下一个匹配
N 上一个匹配
* 向后搜索当前光标下的单词
# 向前搜索当前光标下的单词
:%s/old/new/g 全局替换
:%s/old/new/gc 带确认的全局替换(安全)
:10,20s/old/new 仅替换10-20行
:.,$s/old/new/g 从当前行到文件末尾替换
:s/old/new 仅替换当前行第一个匹配
|
七、可视模式
1
2
3
4
5
6
7
8
9
10
| v 进入字符可视模式
V 进入行可视模式
Ctrl+v 进入块可视模式(列选择,极强大)
d 删除选中内容
y 复制选中内容
> 向右缩进
< 向左缩进
I 在块选择前插入(需Ctrl+v)
A 在块选择后追加(需Ctrl+v)
c 替换选中内容
|
八、窗口与分屏管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| :split 水平分屏当前文件
:vsplit 垂直分屏当前文件
:sp filename 水平分屏打开新文件
:vs filename 垂直分屏打开新文件
Ctrl+w h/j/k/l 按方向键切换窗口
Ctrl+w w 循环切换窗口
Ctrl+w q 关闭当前窗口
Ctrl+w c 关闭当前窗口
Ctrl+w = 所有窗口等宽等高
:only 关闭除当前窗口外的所有窗口
:new 新建空白窗口
Ctrl+w r 旋转窗口布局
:res +10 增加当前窗口高度
:vertical res +10 增加当前窗口宽度
:close 关闭当前窗口
|
九、标签页管理
1
2
3
4
5
6
7
8
| :tabnew 新建标签页
:tabclose 关闭当前标签页
gt 下一个标签页
gT 上一个标签页
:tabn 2 跳转到第2个标签页
:tabs 查看所有标签页
:tabmove 0 将当前标签移到最前
:tabmove 将当前标签移到最后
|
十、文件操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| :w 保存文件
:w newname 另存为新文件名
:q 退出
:q! 强制退出不保存
:wq 保存并退出
:x 保存并退出(比:wq智能)
ZZ 保存并退出(快捷键)
:qall 退出所有窗口
:wqall 保存并退出所有窗口
:e filename 打开文件
:e! 重新加载文件(放弃修改)
:r file 将file内容插入到光标后
:r! command 将命令输出插入到光标后
:w !sudo tee % 以sudo权限保存(忘记sudo时救命)
|
十一、注释操作技巧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| " 删除第一行的注释(假设#开头)
:1s/^#//
:1s/^\/\/// " 删除第一行//注释
" 删除所有行首注释(//、#、--等)
:g/^#/d
:g/^\/\//d
:g/^--/d
" 删除所有注释(含行内注释)
:%s/\/\/.*$//g " 删除//注释
:%s/#.*$//g " 删除#注释
:%s/\/\*.*\*\///g " 删除/* */注释
" 添加注释
:g/pattern/s/^/# / " 给匹配行添加注释
:1,10s/^/# / " 给1-10行添加注释
|
十二、宏录制(批量操作神器)
1
2
3
4
5
6
7
8
| qa 开始录制宏到寄存器a
... 执行你的操作序列
q 停止录制
@a 执行宏a
@@ 重复执行上一次的宏
10@a 执行10次宏a
100@a 执行100次宏a
:reg a 查看寄存器a的内容
|
十三、标记与跳转
1
2
3
4
5
6
7
8
9
10
| ma 标记当前位置为a(a-z可用)
`a 跳转到标记a的精确位置(行+列)
'a 跳转到标记a所在行的行首
`` 返回上一次跳转位置
``. 返回上一次编辑位置
:marks 查看所有标记
mA 全局标记A(跨文件)
:ju 查看跳转历史
Ctrl+o 返回上一次光标位置(跳转列表)
Ctrl+i 前进到下一个光标位置
|
十四、排序与去重
1
2
3
4
5
6
| :sort 排序所有行
:sort u 排序并去重(unique)
:sort! 反向排序
:sort n 按数字排序
:10,20sort 仅排序10-20行
:sort i 忽略大小写排序
|
十五、外部命令集成
1
2
3
4
5
6
| :!ls 执行外部命令ls
:r !date 插入当前日期
:%!sort 通过sort命令排序整个文件
:%!grep pattern 通过grep过滤
:1,10!awk '{print $1}' 处理1-10行
:w !sh 将文件内容作为shell脚本执行
|
十六、高级技巧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| gf 打开光标下的文件路径
gx 打开光标下的URL(需配置)
:set number 显示行号
:set nonumber 隐藏行号
:set paste 进入粘贴模式(避免自动缩进)
:set nopaste 退出粘贴模式
:set list 显示不可见字符(制表符、换行)
:set nolist 隐藏不可见字符
:set wrap 自动换行
:set nowrap 不自动换行
:set ignorecase 搜索忽略大小写
:set hlsearch 高亮搜索结果
:nohlsearch 取消高亮
:m 移动当前行
:earlier 15m 回退到15分钟前的版本
:later 15m 前进到15分钟后的版本
|
十七、日志与大数据文件专用
1
2
3
4
5
| :g/2025-11-09/ " 跳转到指定日期行
:g/pattern/p " 打印所有匹配行
:global/pattern/normal @q " 对匹配行执行宏q
less +F file.log " 实时查看日志(按Ctrl+C暂停,F继续)
:/pattern " 搜索后按n/N导航
|
学习路径建议:
- 入门:掌握
h/j/k/l、i/a/o、x/dd/yy/p、u - 进阶:学习
w/e/b、0/$、gg/G、/搜索、v可视模式 - 高级:掌握
:s替换、:g全局命令、qa宏录制、Ctrl+v块操作、Ctrl+w窗口管理 - 专家:熟练组合命令,如
d5j、10@a、:%!command
效率提示:所有命令前加数字可重复执行,如5dd删除5行,10j向下移动10行,熟练后效率提升10倍以上。