Visual Code 的 Vim 插件极简使用手册
极简配置
文件 -> 首选项 -> 设置 -> 搜索 vim,向下找到在 setting.json 中添加如下配置
{
"vim.leader": "<space>",
"vim.useSystemClipboard": true,
"vim.useCtrlKeys": true,
"vim.insertModeKeyBindings": [
{
"before": [
"<C-]>"
],
"after": [
"<Esc>"
]
}
],
"vim.handleKeys": {
"<C-a>": false,
"<C-f>": false,
"<C-c>": false,
"<C-p>": false,
}
}
常用命令
光标移动(普通模式)
命令 | 说明 |
---|
h/j/k/l | 左/下/上/右 |
w/b | 下一个/上一个单词 |
e/E | 单词尾/单词尾(忽略标点) |
^/$/0 | 行首非空字符/行尾/行首 |
gg/G | 文件首/尾 |
H/M/L | 屏幕首/中/尾 |
nG | 跳转到第 n 行 |
fx/Fx | 跳到下一个/上一个 x |
;/, | 重复上一个 f/F |
Ctrl+f/b | 向下/上翻页 |
Ctrl+d/u | 向下/上翻半页 |
标记移动(普通模式)
命令 | 说明 |
---|
m{a-z} | 在当前位置设置标记,使用小写字母a-z标识 |
:marks | 显示所有已设置的标记列表 |
`{a-z} | 跳转到对应标记的位置 |
`" | 跳转到上次编辑的位置 |
:ju[mps] | 显示跳转历史列表 |
Ctrl + o | 跳转到上一个位置(older) |
Ctrl + i | 跳转到下一个位置(newer) |
编辑
普通模式
命令 | 说明 |
---|
i/I | 光标前/行首插入 |
a/A | 光标后/行尾插入 |
o/O | 下行/上行插入 |
ea | 单词尾插入 |
dd/D | 删除整行/删至行尾 |
x/X | 删除当前/前一个字符 |
s/S | 删除当前字符/整行并插入 |
u/. | 撤销/重复上一命令 |
J | 合并两行 |
Alt+↑/↓ | 行向上/下移动 |
插入模式
命令 | 说明 |
---|
Ctrl+h/w/del/u/k | 删除前一个字符/单词/后一个单词/至行首/至行尾 |
Ctrl+rx | 插入模式下执行寄存器 x 的内容 |
Ctrl+o | 临时进入普通模式 |
可视模式
命令 | 说明 |
---|
v | 字符可视模式 |
V | 行可视模式 |
Ctrl+v | 块可视模式 |
可视模式下的操作
命令 | 说明 |
---|
d | 删除选定文本 |
y | 复制选定文本 |
> | 增加缩进 |
< | 减少缩进 |
~ | 切换大小写 |
u | 转换为小写 |
U | 转换为大写 |
文本对象和范围
文本对象
对象 | 描述 | 示例 |
---|
w | 单词 | diw 删除单词 |
s | 句子 | das 删除句子 |
p | 段落 | dap 删除段落 |
t | XML/HTML标签 | dit 删除标签内容 |
b | 圆括号块 | dib 删除括号内容 |
B | 花括号块 | diB 删除花括号内容 |
' | 单引号字符串 | di' 删除引号内容 |
" | 双引号字符串 | di" 删除引号内容 |
范围前缀
前缀 | 描述 | 示例 |
---|
i | 内部 | ciw 修改单词内部 |
a | 周围 | caw 修改单词及空格 |
t | 直到 | dtx 删除直到字符x |
f | 查找 | dfx 删除包含字符x |
寄存器
寄存器 | 说明 | 示例 |
---|
reg [register] | 显示寄存器内容 | :reg 显示所有寄存器内容 |
"" | 未命名寄存器,最近一次删除或复制的内容 | p 粘贴最近的内容 |
"0 | 复制专用寄存器,最近一次复制的内容 | "0p 粘贴最近复制的内容 |
"1 - "9 | 删除历史寄存器,按时间排序的最近删除内容 | "1p 粘贴最近删除的内容 |
"a - "z | 命名寄存器,用户自定义存储内容 | "ay 复制到寄存器a |
"+ | 系统剪贴板寄存器 | "+y 复制到系统剪贴板 |
"* | 系统选择寄存器(主要用于X11系统) | "*p 粘贴系统选择的内容 |
"_ | 黑洞寄存器,写入的内容会消失 | "_dd 删除行但不保存到寄存器 |
"/ | 搜索寄存器,保存最近的搜索模式 | "/p 粘贴最近的搜索内容 |
": | 命令寄存器,保存最近执行的命令 | ":p 粘贴最近的命令 |
"= | 表达式寄存器,用于计算表达式 | "=2+2<CR>p 插入计算结果 |
注意:
- 使用大写字母(如
"A
)会追加内容到对应的小写寄存器 - 复制操作默认同时写入
"0
和 ""
寄存器 - 删除操作默认写入
""
和 "1
寄存器,同时将原有内容下移
折叠代码
查询命令
命令 | 说明 | 示例 |
---|
/pattern | 向前搜索 | /const 搜索 “const” |
?pattern | 向后搜索 | ?func 搜索 “func” |
n | 跳到下一个匹配项 | 按 n 继续查找 |
N | 跳到上一个匹配项 | 按 N 反向查找 |
* | 向前搜索当前单词 | 光标在单词上按 * |
# | 向后搜索当前单词 | 光标在单词上按 # |
gd | 跳转到局部变量定义 | 光标在变量上按 gd |
gf | 跳转到文件 | 光标在文件名上按 gf |
:noh | 取消搜索高亮 | 输入 :noh 回车 |
搜索模式
模式 | 说明 | 示例 |
---|
\c | 忽略大小写 | /word\c |
\C | 大小写敏感 | /word\C |
^ | 行首 | /^func |
$ | 行尾 | /end$ |
\< | 单词开始 | /\<word |
\> | 单词结束 | /word\> |
.* | 任意字符 | /start.*end |
标签页
命令 | 说明 |
---|
Ctrl+Tab | 切换标签页 |
Ctrl+w | 关闭标签页 |
Ctrl+p | 打开文件 |
案例
‘.’ 命令
该命令可以作为一个微小的宏。它能重复你从插入模式切换到普通模式再到插入模式的操作。对于下面的文本,你想在每行的末尾添加一个分号。第一行执行 A;<Esc>
,后两行执行 j.
。
var foo = 1
var bar = 'a'
var baz = true