前言
结合了官方文档和一些博主的分享内容,并根据公司的GIT操作要求在这里总结了一篇比较简要的文章,希望多多少少可以帮到大家
一、VSCODE使用VIM
1.安装VIM插件
vim插件有很多很多,我们可以选择被使用率最高的那个
打开vscode,ctrl + shift + x
,搜索vim,就是下图这个
复制配置
然后我们可以把vim文档中的配置先复制到我们自己的 ctrl + shift + p
设置json文件里
{
"vim.easymotion": true,
"vim.incsearch": true,
"vim.useSystemClipboard": true,
"vim.useCtrlKeys": true,
"vim.hlsearch": true,
"vim.insertModeKeyBindings": [
{
"before": ["j", "j"],
"after": ["<Esc>"]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["<leader>", "d"],
"after": ["d", "d"]
},
{
"before": ["<C-n>"],
"commands": [":nohl"]
}
],
"vim.leader": "<space>",
"vim.handleKeys": {
"<C-a>": false,
"<C-f>": false
}
}
vim.handlekeys中屏蔽了某些组合键,防止和vscode快捷键冲突
<C-f>
就是禁用了vim的Ctrl + F ,因为vim的Ctrl + F 是翻页
,vscode的则是查找
不过这里还是建议用vim的查找功能吧,毕竟用都用vim了,还不来点全套的吗
2.其它配置
修改底部状态栏颜色
有时候不同模式可能不好分辨,这时候把vscode底部状态栏颜色
改下就很容易区分了,前提你得先让底部状态栏可见
例如:
普通模式
墨绿色
插入模式
酒红色
可视化模式
灰蓝色
settings.json
配置如下
// vim基础3种模式对应的颜色
"vim.statusBarColors.normal": "#61d6af5d",
"vim.statusBarColors.insert": "#c75d9b52",
"vim.statusBarColors.visual": "#5168b35e",
"vim.statusBarColorControl": true,
// vim折叠代码防止自动展开
"vim.foldfix": true,
// 工作区自定义颜色,这里复制一下就可以了,不同vim模式下面的值是会跟着上面设置的自动改变的
"workbench.colorCustomizations": {
"statusBar.background": "#61d6af5d",
"statusBar.noFolderBackground": "#61d6af5d",
"statusBar.debuggingBackground": "#61d6af5d",
"statusBar.foreground": "#fff"
}
二、常用操作命令
VIM的命令厉害的太厉害,简单的太简单。因为还有很多高难度的表达式替换命令需要大家细细琢磨,所以这里简单梳理下常用的到的命令吧
光标操作
在你学会走之前,你要先学会爬。在你学会修改文件前,你要先学会移动光标。现在,给我学!
以后玩游戏上下左右就都改成 J K H L
吧
文章部分
命令 | 说明 |
---|---|
gg | 跳转至文件头 |
G | 跳转至文件尾 |
行号 + G 或 : + 行号 | 跳转到指定行的开头 |
N + % | 跳转到文件 N% 处 |
{ 和 } | 按段落移动,上移/下移 |
ctrl + b / f | 上/下翻一屏 |
ctrl + u / d | 上/下翻半屏 |
ctrl + y / e | 向上/下滚动一行 |
z + t / z / b | 将当前行移动到屏幕 顶端/中央/底端 |
H / M / L | 将光标移动到屏幕 顶端 /中央 / 底端 |
gd | 跳转到局部变量定义处 |
词组部分
命令 | 说明 |
---|---|
w(小写) | 词组正向跳转到下一个单词开始 (以空格和符号作为分隔) |
W(大写) | 词组正向跳转到下一个单词开始 (以空格作为分隔) |
e(小写) | 词组正向跳转到下一个单词结尾 (以空格和符号作为分隔) |
E(大写) | 词组组正向跳转到下一个单词结尾 (以空格作为分隔) |
b(小写) | 词组反向跳转(以空格和符号作为分隔) |
B(大写) | 词组反向跳转(以空格作为分隔) |
行部分
命令 | 说明 |
---|---|
0 | 到行头 |
$ | 到行尾 |
^ | 到本行第一个不是blank字符的位置(blank:空格、tab、回车等) |
g_ | 到本行最后一个不是blank字符的位置 |
* | 跳转至下一个与当前光标相同的字符上,可跨行 |
# | 跳转至上一个与当前光标相同的字符上,可跨行 |
% | 匹配括号移动 ( 、{ 、[ |
f 和 F | 正向 / 反向 行内查找字符,可跨行 |
; 和 , | 配合 f 和 t 实现 重复 / 反向重复操作 |
/ 和 ? | 后面 / 前面文本中查找内容,n / N 搭配用于向后 / 向前查找下一个 |
代码操作
代码标记
命令 | 说明 |
---|---|
m + {a-z} | 在当前文件,标记光标所在位置 |
:marks | 显示所有标记 |
` + {a-z} 和 ’ + {a-z} | 移动到标记 位置 / 行首 |
` + . | 移动到最后修改的地方 |
:delmarks a-c | 删除标记a、b、c ,如果一个字母则是删除单个 |
:delmarks ! | 删除当前缓冲区所有标记 |
代码排版
命令 | 说明 |
---|---|
>> 和 << | 文本行右移 / 左移 |
gq + N + q | 重新对 N行 排版 |
gq 和 gqq | 对选中内容重新排版,两个qq表示重排本行 |
~ | 对选中内容大小写转换 |
u 和 U | 可视模式将内容转为小写 / 大写 |
zc 和 zo | 收起折叠 / 打开折叠 |
插入模式
命令 | 说明 |
---|---|
i / I | 光标后插入 / 在本行第一个非空字符处插入 |
a / A | 光标后插入 / 在本行最后一个字符处插入 |
o / O | 在本行下面 / 上面 插入新的一行 |
N + cc | 修改N行 |
复制粘贴
命令 | 说明 |
---|---|
yy 或 Y | 复制当前行 |
N + p | 复制后,在光标位置下一行开辟 N 行进行粘贴操作 |
p 和 P | 光标后 / 光标前粘贴 |
删除剪切
命令 | 说明 |
---|---|
N + dd | 删除(剪切)当前行在内的以下 N 行,不加 N 则是删除本行 |
d | 删除(剪切)可视模式选中的区域 |
D | 删除(剪切)光标后本行所有内容,包括光标所在字符 |
d0 | 删除(剪切)光标前本行所有内容,不包括光标所在字符 |
daw 和 das | 删除(剪切)一个词或一个句子,光标不用在句首 |
N + x / X | 正向 / 反向按字符删除(剪切) |
df + 字符 | 从光标处删除至指定字符 |
ci / di / yi + 引号 | 修改 / 剪切 / 复制引号内的内容 |
ca / da / ya + 引号 | 修改 / 剪切 / 复制包括引号在内的内容 |
caw / daw / yaw | 修改 / 剪切 / 复制光标所在单词 |
总结
最后给大家一张很经典的图吧