速查表
基础步骤
| 按键 |
作用 |
| h |
向左移动光标 |
| j |
向下移动 |
| k |
向上移动 |
| l |
向右移动 |
| i |
进入插入模式 |
| Esc / Ctrl+C / Ctrl+[ |
返回正常模式 |
快速按单词移动
| 按键 |
作用 |
| 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 |
转到文件末尾 |
| % |
跳转到匹配的 ({[]}) |
用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.