VSCode + Vim Cheatsheet
Published:
VSCode + Vim Cheatsheet
基础 Vim 导航
| 按键 | 作用 |
|---|---|
h/j/k/l | 左/下/上/右 |
w/b | 下一个/上一个单词开头 |
e/ge | 下一个/上一个单词结尾 |
0/^/$ | 行首/行首非空/行尾 |
}/{ | 下一段/上一段(空行分割) |
gg/G | 文件首/文件尾 |
<C-f>/<C-b> | 下一页/上一页 |
zz/zt/zb | 光标所在行 → 屏幕中间/顶部/底部 |
VSCode 集成键(最重要)
| 按键 | 作用 |
|---|---|
gd | Go to Definition — 跳转到定义 |
K | Hover — 查看类型/文档预览 |
<C-o> | 跳回上一个位置(最常用,像浏览器的后退) |
<C-i> | 跳转到下一个位置(前进) |
gr | 查找所有引用(Go to References) |
gO | 文件 outline 列表 |
gh | 悬停显示类型(同 K,但不会移走光标) |
]r / [r | 下一个/上一个引用 |
]d / [d | 下一个/上一个诊断(error/warning) |
跳到文件
| 按键 | 作用 |
|---|---|
<C-p> | 按文件名搜索(模糊匹配) |
<C-p> → 输入 > | 按文件路径搜索 |
<C-p> → 输入 @ | 按当前文件符号搜索 |
<C-p> → 输入 # | 按全局符号搜索(跨文件) |
gf | Goto File — 打开光标下的文件路径(import / include) |
<C-^> | 在两个文件间快速切换 |
VSCode-specific 操作
| 按键 | 作用 |
|---|---|
<leader><leader> | 打开上次编辑的文件(VSCodeVim <leader> 默认是 \) |
g/ | 只在当前文件中搜索(不是全局搜索) |
z] | 跳到定义(VSCodeVim 兼容键) |
gd → 再按 gd | 如果第一次跳到的是 import,再按一次进源码 |
搜索与替换
| 按键 | 作用 |
|---|---|
<C-f> 或 g/ | 当前文件搜索 |
<C-h> | 当前文件搜索替换 |
<C-Shift-f> | 全局搜索(侧栏) |
<C-Shift-h> | 全局搜索替换 |
* / # | 搜索光标下的单词 下一个/上一个 |
n / N | 搜索结果 下一个/上一个 |
窗口与标签
| 按键 | 作用 |
|---|---|
<C-w>v | 垂直分屏 |
<C-w>s | 水平分屏 |
<C-w>h/j/k/l | 在分屏间跳转 |
<C-w>w | 循环切换分屏 |
<C-w>q | 关闭当前分屏 |
<C-Tab> | 切换 tab |
gt / gT | 下一个 / 上一个 tab |
Python 代码阅读实用组合
gd 跳到定义
<C-o> 跳回来
K 看函数签名/docstring
gr 看谁在调这个函数
gf 打开 import 的路径
<C-p>@ 在当前文件搜某个符号
几个常用的自定义绑定(推荐加到 VSCode settings.json)
{
// 取消高亮
"vim.handleKeys": {
"<C-l>": true,
},
// <leader>h = :noh 取消搜索高亮
"vim.normalModeKeyBindings": [
{
"before": ["<leader>", "h"],
"after": [":", "n", "o", "h", "<CR>"]
}
]
}
不需要的 Vim 功能(影响 VSCode 体验,建议关掉)
{
"vim.useSystemClipboard": true, // yy/p 走系统剪贴板
"vim.hlsearch": true, // 搜索高亮保留
"vim.leader": "<space>", // 把 leader 从 \ 改成空格(推荐)
"vim.foldfix": true, // 修复 z/z 冲突
}