vim
【移动、模式、删除】
0到最开始包括空白符 $ 到最结束包括空白符
hjkl
i 字符前 a 字符后
shift h(^) 移动到行首 shift I 行首插入
shift l(g_) 行尾 shift A 行尾插入
O 行前 o 行后
复制 yy 粘贴 p 删除 dd
删除键的细节热键
d g_ 删到行尾 === dL 存到暂存区 p 可黏贴
d 0 删到行首 === dH
d l 删除当前字符
d j 删除包含当前行在内加下面一行
d k删除包含当前行在内加上面一行
【移动】
e 移动到本单词的末尾,及下一个单词的末尾 end
w 移动到下一个单词的开始 word
b移动到上一个单词的开头 backward
ge移动到上一个单词的结尾
【修改】
x 删除当前光标
X删除当前光标前一个
s删除当前光标所在字符进入insert模式
S删除当前光标所在行注意整行删除进入insert模式
r替换一个字符
R替换多个字符
u 撤销 redo === shift 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+字节 删除光标到字节的内容 dt+字节与df+字节+回车,效果一样,不包含查询的字节,包含光标所在的字节
v f + 字节 可以选中光标到字节范围 包含查询字节 vt+字节 选中范围是光标到查询字节的上一个,可以使用;和,来扩大选中范围
向光标后面查找 / + 字节 + 回车 使用 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 规律保留下标大的,不保留下标小的
【路径跳转】
我们使用 gd 可以跳转路径对应的地址
【超链接跳转】
gx
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/要替换的字符/替换成的字符回车完成多个替换这里的s/要替换的字符/替换成的字符 回车完成多个替换 这里的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 匹配到附近大小写完全相同的字符,可以进行多项编辑
阅读终端的帮助文档,k打开 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 把当前栏的文件都关闭 (没有生效) :qall 关闭所有编辑器
ctrl w + o 保留当前窗口关闭其他窗口 当仅有一栏窗口时(不生效 ):tabonly 可以保留当前tab,关闭其余tab
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
录制宏
qa + 键的组合 q 结束录制,存入寄存器,如何查看 :reg a,如何调用 @a ,这里的 a 属于自定义名称
@@ 重复最后一次的宏执行
数字+@+寄存器 多次执行寄存器
宏执行报错的时候自动停止,可以利用这个机制通过输入 大数字+@+寄存器 可以实现全部执行,执行完毕,多余执行命令报错停止执行
qA 追加宏
修改宏
取出来 “ap 复制出来
:put a
修改 "ayw(仅放入当前光标到最后的内容) 或者 "ayy (将一行都放入寄存器)
注意 光标的起始位置
移动使用相对位置
自定义配置 使用vim配置 vscode 命令
空格+f+d k格式化文档
空格+[ 折叠函数
vim 原生 zo za
ctrl shift e 切换资源管理器 自定义为 ctrl ;
a 自定义配置新建文件 当光标在目录时
空格 n f 自定义在当前目录下创建文件 当光标在编辑区时
shift a 自定义配置新建文件夹 当光标在目录时
空格 n d 自定义快捷键 创建文件夹 当光标在编辑区时
d 自定义配置删除键 当光标在目录时
r 自定义配置重命名键 当光标在目录时
shift ctrl w 关闭vscode项目窗口
ctrl alt r 重构选中函数
搜索
ctrl shift f + 选中文字 = 全局搜索
ctrl shift p = 搜索命令
ctrl shift o = 在当前文件下进行搜索
ctrl t = 全局搜索 关键字
ctrl p = 全局搜索文件
禅模式切换 ctrl \\