跳转至

速查表

基础步骤

按键 作用
h 向左移动光标
j 向下移动
k 向上移动
l 向右移动
i 进入插入模式
Esc / Ctrl+C / Ctrl+[ 返回正常模式
          k
          |
    h <-  O  -> l
          |
          j

快速按单词移动

按键 作用
w 移动到下一个单词的开头
b 移动到上一个单词的开头
e 移动到下一个单词的结尾
ge 移动到上一个单词的结尾
W 移动到下一个大单词的开头
B 移动到上一个大单词的开头
E 移动到下一个大单词的结尾
g E 移动到上一个大单词的结尾
word by word. WORD_ (BY_2) WORD>

查找字符

按键 作用
f +{字符} 查找字符的下一个出现位置
F +{字符} 查找字符的上一个出现位置
t +{字符} 查找字符的下一个出现位置并将光标放在其前面
T +{字符} 查找字符的上一个出现位置并将光标放在其前面
; 转到{字符}的下一个出现位置
, 转到{字符}的上一个出现位置
    Find "xtep","xtep",  till "optical"     

极快水平移动

按键 作用
0 移动到行的第一个字符
^ 移动到行的第一个非空白字符
$ 移动到行的结尾
g _ 移动到行末的非空白字符
    第一个非空白字符     

更快垂直移动

按键 作用
} 向下跳转整个段落
{ 类似但向上
Ctrl d 滚动页面向下移动半页
Ctrl u 滚动向上移动半页

带搜索的高精度垂直移动

按键 作用
/ +{模式} 搜索{模式}。{模式}是一个正则表达式。
? +{模式} 向后搜索{模式}。
/ 向前重复上次搜索
? 向后重复上次搜索
n 转到下一个匹配
N 转到上一个匹配

带计数的更快移动

按键 作用
{计数}{动作} 重复{动作} {计数} 次
2 w 跳转到第二个单词
4 f " 跳转到第四个 " 字符的出现位置
3 /cucumber 跳转到第三个 "cucumber" 的匹配
    //    cucumber cucumber cucumber cucumber
def max():
    return max

语义移动

按键 作用
gd 转到定义(光标下单词的定义)
gf 转到文件(光标下文件)
gg 转到文件顶部
{行数}gg 转到{行}
G 转到文件末尾
% 跳转到匹配的 ({[]})
max()

用Vim操作符神奇编辑

按键 作用
{operator}{计数}{动作} 在动作覆盖的文本上应用操作符
d 删除
c 更改,删除并进入插入模式
y 复制
p 粘贴
g~ 切换大小写
> 右移
< 左移
= 格式化
delete
change letter words.    a sentence. b sentence.
yank  kpyank  
paste/put
BigBang

按行操作符

按键 作用
dd 删除一行
cc 更改一行
yy 复制一行
g~~ 切换一行的字母大小写
>> 右移一行
<< 左移一行
== 格式化一行
D 从光标删除到行尾
C 从光标更改到行尾
Y 复制一行。与 yy 类似
P 在光标前粘贴
dd掉这一行
cc就是dd+i
yy复制一行
abcdeABCED_FgHiJk
>>向右缩进
    <<向左缩进
D从光标删除到行尾。 o开始删除。
C从光标更改到行尾。 o开始更改。
Y复制一行
P在光标前粘贴。      P        

文本对象

按键 作用
{operator}+a+{text-object} 将操作符应用到包括尾随空白在内的所有文本对象
{operator}+i+{text-object} 在文本对象内部应用操作符
diw 删除内部单词
daw 删除一个单词
dis 删除内部句子
das 删除一个句子
dip 删除内部段落
dap 删除一个段落
di( / dib 删除括号内部
da( / dab 删除括号内部的文本(包括括号)
di{ 删除大括号内部
da{ 删除大括号内部的文本(包括大括号)
di[ 删除方括号内部
da[ 删除方括号内部的文本(包括方括号)
di" 删除引号内部
da" 删除引用的文本(包括引号)
dit 删除标签内部
dat 删除一个标签(包括标签)
ciw 其他操作符也一样...
This is a sentence to test.
(test)
b()
[test for test]
(big)
<img>this is new</img>

重复上次更改

按键 作用
. 重复上次更改

字符编辑命令

按键 作用
x 删除一个字符。与 dl 类似
X 删除光标前的字符。与 dh 类似
s 更改一个字符。与 cl 类似
~ 切换字符的大小写
Sentence for tESt command..

撤销和重做

按键 作用
u 撤销上次更改
Ctrl+R 重做上次撤销
{计数}u 撤销上次 {计数} 次更改

插入文本

按键 作用
i 在光标前进入插入模式
a 在光标后进入插入模式
I 在行首进入插入模式
A 在行尾进入插入模式
o 在当前行下方插入新行并进入插入模式
O 在当前行上方插入新行并进入插入模式
gi 转到上次离开插入模式的位置
      Line start,                 sentence end.     

可视模式

按键 作用
v 进入字符级可视模式
V 进入行级可视模式
Ctrl+V 进入块级可视模式(选择矩形文本块)
{可视模式}{动作}{操作符} 可视模式的操作与正常模式相反。首先指定动作来选择文本,然后应用操作符

在下一个搜索匹配上操作

按键 作用
{操作符}gn 在下一个匹配上应用操作符
. 使用 {op}gn 后,点命令在下一个匹配上重复上次更改。哇!
THIS IS FOR TEST.
THIS IS FOR TEST.
THIS IS FOR TEST.
THIS IS FOR TEST.
THIS IS FOR TEST.

复制和粘贴

按键 作用
y+{动作} 复制动作覆盖的文本
p 在光标后粘贴
P 在光标前粘贴
yy 复制行
Y 复制行
yyp 复制行
ddp 交换行
xp 交换字符
"ay+{动作} 复制到寄存器 a
"Ay+{动作} 复制并追加到寄存器 a
"ap 从寄存器 a 粘贴
" 未命名寄存器
0 复制寄存器
1-9 删除寄存器
a-z 命名寄存器
Ctrl+R a 在插入模式下从寄存器 a 粘贴

命令行模式

按键 作用
:edit {file} :e {file} 创建或编辑文件
:write:w 保存文件
:quit:q 关闭文件
:write!:w! 强制保存文件
:quit!:q! 不保存关闭文件
:wq 保存并关闭文件
:wall:wa 保存所有文件
:qall:qa 关闭所有文件
:wqall:wqa 保存并关闭所有文件
:qall!:qa! 不保存关闭所有文件
:[range]delete [register]:[r]d [r]++ 将多行删除到寄存器
@: 重复上次 ex 命令
@@ 重复一次后,你可以用这个继续重复

命令行模式范围

按键 作用
{start},{end} 范围的起始和结束行,例如 :1,2d
{start},{offset} 范围的起始和偏移行,例如 :1,+2d
. 当前行,例如 :.,+2d
% 整个文件,例如 :%d
0 文件开头,例如 :0,10d
$ 文件末尾,例如 :10,$d
++'<,'>++ 可视选择

命令行模式替换

按键 作用
:[range]/{模式}/{substitute}/[flags] 在给定范围内将匹配的模式替换为字符串字面量
g 标志替换一行中的所有匹配
i 标志不区分大小写搜索
c 标志确认每个匹配的替换

分割窗口

按键 作用
:sp 在水平分割中打开文件
:vsp 在垂直分割中打开文件
Ctrl+S 在水平分割中打开同一文件
Ctrl+V 在垂直分割中打开同一文件
Ctrl+H 移动到左侧分割
Ctrl+J 移动到下方分割
Ctrl+K 移动到上方分割
Ctrl+L 移动到右侧分割

标签页

按键 作用
:tabnew 在新标签页中打开文件
:tabnext/:tabn 跳转到下一个标签页
:tabprev/:tabp 跳转到上一个标签页
:tabonly/:tabo 关闭所有其他标签页

Vim包围

按键 作用
ds 删除包围,例如 ds"
cs 更改包围,例如 cs*tem>
ys 添加包围,例如 ysiw"
ds 删除包围引号
cs* tem> 将包围的 * 更改为 标签
ysi w" 用引号包围光标下的单词
S 在可视模式下,选择文本,然后键入S来添加包围。例如 Stp> 将选择包装在

标签中

自定义映射(需要添加到配置中)

模式 按键 动作
插入模式 JK 返回正常模式
正常模式 J 更快向下移动
正常模式 K 更快向上移动
正常模式 leader>J 连接行
正常模式 / 清除高亮文本
正常模式 W 保存文件
正常模式 P 打开命令面板
正常模式 T 转到文件中的符号
正常模式 Ctrl+H 移动到左侧窗口
正常模式 Ctrl+J 移动到下方窗口
正常模式 Ctrl+K 移动到上方窗口
正常模式 Ctrl+L 移动到右侧窗口
正常模式 tt 创建新标签页
正常模式 tn 移动到下一个标签页
正常模式 tp 移动到上一个标签页
正常模式 to 关闭除当前标签页外的所有标签页

用Easy动作更快移动

按键 作用
w 单词的开头
b 向后单词的开头
++"b"dw++ 到处单词的开头。bd 代表双向
e 单词的结尾
++"g"e++ 向后单词的结尾
++"b"dw++ 到处单词的结尾
j 行的开头
k 向后行的开头
++"f"{++ char} 查找字符
++"F"{++ char} 向后查找字符
++"t"{++ char} 直到字符
++"T"{++ char} 向后直到字符
++"s"{++ char} 到处搜索字符

多光标

按键 作用
gb++ 添加一个额外的光标。此命令将你置于可视模式。实际上,它一次选择每个新光标下的所有单词。
++{operator}++ 在多个光标选择的单词上应用操作符。
i 同时在多个单词前插入
a 同时在多个单词后追加
Ctrl+V 进入可视块模式并使用动作选择文本
++{operator}++ 在可视选择上应用操作符。
i 在可视选择前插入
a 在可视选择后追加

用宏进行可重用编辑

按键 作用
++q{register}++ 在 {register} 中开始录制新宏
q 停止录制宏
++@{register}++ 重放 {register} 中的宏
++@@++ 重放你执行的最后一个宏

一些有用的仅VSCode映射

按键 作用
af 选择越来越大的文本块
gh 相当于将鼠标悬停在一段文本上。

奖励01:整个和参数文本对象

按键 作用
D+A+E 删除完整缓冲区
Y+A+E 复制完整缓冲区
C+I+A 更改函数参数
D+A+A 删除函数参数包括分隔符

FASTER , STRONGER, HARDER.