Vim

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导航

学习路径建议

  1. 入门:掌握h/j/k/li/a/ox/dd/yy/pu
  2. 进阶:学习w/e/b0/$gg/G/搜索v可视模式
  3. 高级:掌握:s替换:g全局命令qa宏录制Ctrl+v块操作Ctrl+w窗口管理
  4. 专家:熟练组合命令,如d5j10@a:%!command

效率提示:所有命令前加数字可重复执行,如5dd删除5行,10j向下移动10行,熟练后效率提升10倍以上。

本文采用 CC BY-NC-SA 4.0 许可协议
使用 Hugo 构建
主题 StackJimmy 设计