最开始的移动
0到最开始包括空白符 $ 到最结束包括空白符
hjkl
i 字符前 a 字符后
shift h(^) 移动到行首 shift I 行首插入 (💡通过自定义配置实现功能)
shift l(g_) 行尾 shift A 行尾插入 k (💡通过自定义配置实现功能)
O 行前 o 行后
复制 yy 粘贴 p 删除 dd
删除键的细节热键
d g_ 删到行尾 === dL 存到暂存区 p 可黏贴 (💡通过自定义配置实现功能)
d 0 删到行首 === dH (💡通过自定义配置实现功能)
d l 删除当前字符
d j 删除包含当前行在内的两行
移动相关
e 移动到本单词的末尾,及下一个单词的末尾 end
w 移动到下一个单词的开始 word
b移动到上一个单词的开头 backward
ge移动到上一个单词的结尾
修改相关
x 删除当前光标
X删除当前光标前一个
s删除当前光标所在字符进入insert模式
S删除当前光标所在行注意整行删除进入insert模式
r 替换一个字符
R 替换多个字符
u 撤销
C 大写c从光标处删除到结尾
可视化操作
v 基于字符可视化 V基于行可视化 ctrl v 基于块可视化 可以配合 d,c,y等按键
o 在可视化模式下,可以更换操作方向 gv可以恢复刚刚选中的模式
ve选中单词从光爆所在到结尾 复制黏贴可以使用系统剪贴板
跨多行编辑
文本对象 操作符 、可视化模式
i 内部 a外部
vi( 把()内的内容全部选中 扩展 di( 就可以删除()内的内容
va( 连带()也选中
viw 把单词选中 ve有局限性的选中 ciw 删除一个单词
vi[ 选中中括号里面的内容 当然我们不建议使用v可视化模式
vit 选择比如标签的所有内容
`'"<{[都一样
cia 修改一个参数 daa 删除一个参数
die 删除正篇文章,保留前后空格 dae文章全部删除干净,包括前后空格
常用的技巧快捷键:
cw 删除光标到当前单词结尾 ea 在当前单词结尾处添加 IAOo 在需要的位置处插入
查询
f 后面跟字符,可以进行查找在光标所在的行,使用;可以重复操作,使用,可以反向操作
t 查找到目标字节的前一位
d/c t+字节 删除光标到字节的内容
v f + 字节 可以选中光标到字节范围
全局查找 / + 字节 使用 n查找下一个,N进行反向查找
使用 ?进行向前查找 同样使用 n 、N 进行查找,
按下 ?或者/ 以后可以加上上下方向查看之前输入查询的地址
我们也可以进入 v 模式,使用 / 输入字节,回车后按d进行删除 ,删除包括光标到输入的第一个字节,包含该字节,这里可以移动光标进行选择
或者直接 d / + 字节 回车,这时候不包含键入的字节
光标 输入 # 向上查找 输入 * 向下查找
easymotion
空格x2 + w 光标之后 开头字母高亮
空格x2 + e 光标之后 结尾字母高亮
空格x2 + b 光标之前 开头字母高亮
空格x2 + ge光标之前 结尾字母高亮 ---- 后续输入高亮的 字母直接跳转对应的位置
空格x2 + j 往下
空格x2 + k 往上
空格x2 + h 密集往上
空格x2 + l 密集往下
空格x3 + j 全局查询跳转,密密麻麻
sneak
s/S + 两个字母 可以全局搜索 ;向后搜索,向前搜索
因为 s 与之前的 s 删除键重复,而 s 与 f键功能重叠,我们把 f 键改为 s键,把s键重置功能为原来 s键的功能,并且避免递归调用
所以这些操作处理后, f 拥有全局查找的能力,s具有删除当前字符的功能
sneak
dz+字节删除 光标到该字节之间的范围,不包含该字节 也可以使用 f
dZ+字节删除 反向查找,删除光标到该字节之间的范围 也可以使用 F
yiw viwp 复制一个单词 粘贴覆盖另一个
数字作用
dw 也可以写成 3dw或者d3w
5l 向右走五格
fte 搜索,2fte 连续两次搜索动作 使用数字的一个好处是撤销时也是一次性撤销
this is an apple / c2w 光标在an上,可以把apple一并删除
符号命令
.命令可以记忆在 insert 模式下的操作,输入可实现刚刚的操作
可以记忆 diw 命令
A+; 可以记忆
/fn 字母 n 查下一个 cw 删除 cxr 新换成的字符串 可以记忆
定位
单文件使用mm来进行标记 使用 'm 来进行跳转到行,使用 `m 来跳转到行列
多文件使用mM来进行标记 使用 'M 来进行跳转到行,使用`M 来跳转到行列
可以添加多个标记 ma 要使用 'a 及 `a 来跳转
跳转到定义 gd
跳转记录 手动跳转也会记录,jk与翻页不会记录 vim-sneak仅记录一次 ,可以 使用 :jumps 来查看记录
ctrl o 进行回退 ctrl i 往前
光标在 {} 跳转相应的括号
处理包裹字符的符号
cs+现有符号+要变为的符号 将现有的包裹符号变为其他包裹符号
ys+iw(范围)+ { (符号) 对设置的范围进行添加包裹符号
ds+(已存在的符号)将已存在的符号删除
进入可视化模式选中文本 S + 要设置的符号 就可以在可视化模式设置包裹符号
替换字符串
:s/要替换的字符/替换成的字符 回车完成单个替换
:%s/要替换的字符/替换成的字符 回车完成全局替换
:5,6s/要替换的字符/替换成的字符 回车完成多个替换 这里的5,6的意思是指的行数
:5,$s/要替换的字符/替换成的字符 回车完成多个替换 这里的$的意思是说从第5行开始包括第5行到结尾
:%s/hi[4,5]/hah 回车 完成全局替换 这里的 hi[4,5] 的意思是正则匹配4或5
:%s 这里的替换有曲线,仅替换行内第一个匹配到的目标,我们这里需要完全全局的话,要在结尾加上/g :%s/vnode/hello/g
:%s/hello/zaoya/c 进入问答替换模式 ynaql y: 仅替换当前,弹窗不关闭,后续替换进行输入进行选择 n 跳过当前 a 剩余都替换 q强制退出不替换 l 替换当前并退出
可视化模式下进行替换,范围编辑器已经选择好只需要我们在基础上 拼接 s/正则/替换成为的字符/g或者c 可视化模式默认全局行第一个字符替换
gb 匹配到附近大小写完全相同的字符,可以进行多项编辑
阅读终端的帮助文档,打开 git bash 使用命令 :help s_flags
悬浮显示
光标移动到想要展示的字符上,gh ,退出使用 ctrl + [
大小写
gU iw 大写光标所在字段 gu iw 小写 ~ 如果是大写,变小写,如果是小写变大写
注释
gcl 光标所在行注释 gcj 光标所在行及下一行注释
gC iw 多行注释 /**/
掌握窗口的管理
ctrl w + v 两列窗口
ctrl w + s 上下
ctrl w + jkhl 切换窗口 修改键以后 shift + 方向键可以切换光标所在窗口 (仅normal模式)
ctrl w + w 两列窗口互换
ctrl w + c 关闭当前文件
command k w 把当前栏的文件都关闭
ctrl w + o 保留当前窗口关闭其他窗口
ctrl p 弹出我们的文件
vscode 操作窗口
ctrl \ 新建窗口
ctrl alt \ 向下拆分窗口
黏贴 "*p
缩进与反缩进
normal
<<- 当前行反缩进
insert
Ctrl+d- 删除缩进
Ctrl+t- 增加缩进
visual
> 缩进
< 反缩进
如何删除一个函数
% 如果光标在左侧,按下%,会自动匹配到右边
Python等缩进语法:
vii 把缩进部分选中
vai 把函数名包括缩进部分选中
js 选中一个函数
vaI 选中函数名及函数体
vii 选中函数体
基于段落删除 遇到空格会隔开
dap dal (这里已经配置成 dai ,光标在里面删除整个函数)
基于配置删除 当光标在最外层,删除整个函数
V$%d 空+df