示意图

vi-vim-cheat-sheet-sch.gif

普通模式

快捷键功能
i进入插入模式,光标前插入
I进入插入模式,行首前插入
a从当前字符后插入光标
A从当前行后插入光标
o当前行后插入新一行
O当前行前插入新一行
^移至行首
$移至行末
h左移一个字符
j下移一个字符
J将下一行接到当前行尾部
k上移一个字符
l右移一个字符
H定位屏幕顶的行
M定位屏幕中间的行
L定位屏幕底部的行
w移动到下一个单词开头
b移动到上个单词开头
e移动到下一个单词结尾
ge移动到上个单词结尾
数字(其中数字0)向下移动指定行,数字零代表回当前行号后第一个字符位置
数字 + G移动到指定行首
ctrl + o回到上次的行,可多次回退,精确到行和列
ctrl + i回退回退的上次的行,可多次,与ctrl + o 相反方向
' '两个单引号,回到上次的行,精确到行
\` \`两个反引号,回到上次的位置,精确到行和列,好用
.重复操作
u回退操作
ctrl + r回退的回退操作
f/F搜索行内f后写的字符,搜索F前的字符
t/T搜索行内某字符,并定位在它之前的那个字符
;/ ,查找下一个字符 / 回退上一个字符
*选中当前单词,并高亮其他相同单词
n / N遍历下一个高亮单词 / 回退上一个遍历的字符
dd剪切当前行
x剪切当前字符
dw/daw/d3w选中单词头删除该单词/选中该单词任何字符删除该单词/删除后面3个单词
dl(x)/dap删除当前字符(两者等价)/删除当前段落
d$ 或D删除选中字符及以后该行所有字符
S删除选中单词及之前该行字符
cc选中当前行,整体修改
cw/caw选中单词头修改该单词/选中该单词任何字符修改该单词
yy复制当前行
p粘贴剪切板内容
\> \>缩进当前行
< <向左缩进当前行
= =自动缩进
[]跳到头
][跳到尾
[[跳到上一个函数
]]跳到下一个函数
zz重绘当前屏幕
gg定位到本文第一个字符
G定位到本文最后一行
gUw该字符及该字符后该单词 装换为大写
gUU该行转换为大写
gUaw该单词转换为大写
"0调用复制专用寄存器,再按p即可粘贴
” +字母调用一个有名寄存器 “a ~ z”,"jyy 将当前行写到j寄存器
” + 加号加号寄存器 与系统剪切板对应,此加号是要写的
ci + {将{}括号内所有内容修改
di + {将{}内所有内容删除
yi + {将{}内所有内容复制
vi + {将{}内所有内容选中到块
ctrl + f转向前一页的行
ctrl + b转向后一页的行
ctrl + u转向前半页的行
ctrl + d转向后半页的行
ctrl + y视图转向前一行,光标未转移
ctrl + e视图转向后一行,光标未转移
ctrl + g列出问价一共多少行
m + 大小写字母给当前字符添加标记
' + 大小写字母回到标记所在行
\` + 大小写字母回到标记字符
H转到屏幕顶端字符
M转到屏幕中间字符
L转到屏幕底端字符
zo展开一个折叠
zc收起一个折叠
za切换折叠状态
zR打开全部折叠
zM全部折叠

插入模式

快捷键功能
ctrl + w删除前一个单词
ctrl + u删除至行首
esc / ctrl + [返回普通模式
ctrl + o只返回普通模式接收一个指令
ctrl + r+ 寄存器名不离开插入模式粘贴一个寄存器,省略寄存器前缀 “
crtl + insert光标复制
shift + insert光标粘贴

命令行模式

快捷键功能
:数字到指定行开头
/ 字符串文档中搜索下一个匹配项
?字符串文档中搜索上一个匹配项
: s/target/replacement执行替换
:w存盘
:w!强制存盘
:wq存盘退出
:x存盘退出
:q不存盘退出
:g/aaa/s//bbb/g将文件中的aaa 替换成bbb

可视化模式

快捷键功能
v进入字符可视化
V进入行可视化
Ctrl + v列可视化
gv选中上次的选区
r + 字符将选区每个字符位替换为所输入的字符

常用操作

快捷键功能
ggVG选中所有内容
ctrl + o + zz快速重绘屏幕(插入模式下,如在普通模式下,ctrl + o 有另外的含义)
"+加号+p可粘贴系统剪切板的内容
"+加号+y可将vim里的内容复制到剪切板
m+ 字母标记行
' + 字母回到标记行
"+字母+yy将当前行复制到指定的寄存器
"+字母+p将指定寄存器内容粘贴
VGd将当前行及后面的所有行删除
gUU当前行转为大写
guu当前行转为小写
guw当前单词转换为小写
gUw当前单词转换为大写

Easymotion

快捷键功能
\ \s全文搜索后面提示符输入的字符
\ \f光标后搜索后面提示符输入的字符
\ \j加强版跳转后面的指定行
\ \k加强版跳转前面的指定行
\ \w跳转到前面单词的首位
\ \b跳转到后面单词的首位
\ \e跳转到后面单词的末尾
\ \ge跳转到前面单词的末尾
最后修改:2020 年 12 月 10 日
如果觉得我的文章对你有用,请随意赞赏