模式切换

命令 说明
Esc / Ctrl+[ 回到普通模式
i 光标前插入
a 光标后插入
o 下一行插入
O 上一行插入
v 可视模式(字符)
V 可视模式(行)
Ctrl+v 可视模式(块)
: 命令行模式

光标移动

命令 说明
h/j/k/l 左/下/上/右
w/b 下/上一个单词
0/$ 行首/行尾
^ 第一个非空字符
gg 文件开头
G 文件结尾
:n 跳到第 n 行
Ctrl+f/b 下/上翻页
Ctrl+d/u 下/上翻半页
{/} 上/下一段落

编辑操作

命令 说明
x 删除字符
dd 删除整行
dw 删除一个单词
d$ / D 删至行尾
yy 复制整行
yw 复制一个单词
p/P 在光标后/前粘贴
u 撤销
Ctrl+r 重做
. 重复上次操作
r 替换单个字符
>> / << 缩进/反缩进

搜索与替换

命令 说明
/pattern 向下搜索
?pattern 向上搜索
n/N 下/上一个匹配
* 搜索当前单词
:%s/old/new/g 全文替换
:%s/old/new/gc 全文替换(确认)
:s/old/new/g 当前行替换

文件与窗口

命令 说明
:w 保存
:q 退出
:wq / ZZ 保存并退出
:q! 强制退出
:e file 打开文件
:sp file 水平分屏
:vs file 垂直分屏
Ctrl+w h/j/k/l 切换窗口
Ctrl+w w 循环切换窗口

其他实用命令

命令 说明
>> / << 增加/减少缩进
~ 切换大小写
ga 显示字符编码
Ctrl+g 显示文件信息
:!cmd 执行外部命令
:r file 读入文件内容到当前光标处

既然你熟悉 Linux 里的 Vim,我们在 VS Code 里配合机器学习开发时,其实只需要把最核心、出镜率最高的命令“肌肉记忆”唤醒即可。 Jupyer 笔记本里的 Vim 体验非常微妙,它分为“格子内代码编辑”和“格子间大跳”。

下面为你分门别类整理好这四张高频命令表,你可以随时截图保存或挂在旁边查阅:

一、 光标“微观位移”与脱身(解决出括号、出引号痛点)

在写特征列表(如 features = [...])时,这组命令配合 jj 退出输入模式,能让你手掌纹丝不动:

快捷键 动作含义 独家搬砖心法
h / j / k / l 左 / 下 / 上 / 右 基础方向键,写代码时 l 用来出引号最顺手
w 跳到下一个单词的开头 写一长串参数时,按 w 直接跳到下一个参数
e 跳到下一个单词的末尾 想在某个变量名后面加个下划线,按 e 瞬间定位
b 跳回上一个单词的开头 发现前面的变量名拼错了,按 b 杀回去
0 (数字) 闪现到当前行的绝对行首 快速回到行头加注释
$ 闪现到当前行的绝对行尾 写完一行,闪现到末尾敲逗号 , 或分号 ;
f + 字符 精准单行行内搜索闪现 神技:光标在引号内,敲 f' 直接闪现到右引号上

二、 绝杀流:编辑、删除与替换(机器学习特征清洗利器)

Vim 的真谛在于“动词 + 名词”的组合公式。在改写矩阵名、特征名时是毁灭级的效率:

快捷键组合 动作含义 实际应用场景示例
ci' Change Inside '(修改单引号内) 把 'sepal_length' 瞬间清空并直接进入输入模式
ci( Change Inside ((修改括号内) 把 plt.subplots(2, 2) 括号里的参数瞬间清空重写
di' Delete Inside '(删除单引号内) 只删除引号里的字,但保留引号本身
da' Delete Around '(连引号一起删) 连带着单引号和里面的文本一并抹除
x 删除光标所在的当前字符 相当于手边的不退格 Delete 键
dd 剪切 / 删除当前一整行 废弃某一行没用的画图配置时连敲两下
yy 复制当前一整行 复制上一行的特征配置
p 在光标下方粘贴 配合 yy 或 dd 使用
u 撤销上一步操作 (Undo) 代码写崩了无脑按 u 倒流时间

三、 宏观穿梭:在超长 Notebook 格子里疯狂翻页

当你的 Jupyter 笔记本里堆满了高维矩阵计算、各种 EDA 散点图,一屏根本装不下时,右手去搓滚轮非常慢。在普通模式(Normal Mode)下直接键盘起飞:

快捷键 动作含义 独家搬砖心法
Ctrl + d Down,向下翻半屏 刷机器学习训练日志、看测试集数据最快的方式
Ctrl + u Up,向上翻半屏 看完结果,快速杀回顶部的 import 区
gg 瞬间闪现到当前代码格子的最顶部 快速回到该格子的第一行
G (Shift+g) 瞬间闪现到当前代码格子的最底部 快速到该格子最后一行追加 plt.show()

四、 梦幻联动:VS Code Jupyter 专属的“格子控制”

当你在 VS Code 里装了 Vim,按下 Esc 退出格子的输入模式后,Vim 会和 Jupyter 的原生快捷键完美融合,让你用左手直接操控整个笔记本的生命周期:

快捷键 动作含义 独家搬砖心法
j / k 在不同的代码格子(Cells)之间上下跳跃 退出编辑后,用 j k 像挑衣服一样在格子间穿梭
A (Shift+a) 在当前格子上方新建一个空单元格 Above
B 在当前格子下方新建一个空单元格 Below
dd (连敲两下) 彻底删除当前选中的代码格子 删掉没用的测试输出格子
m 把当前格子切换为 Markdown 文本模式 用来写实验报告、高数公式推导
y 把当前格子切换回 Python 代码模式 从写报告无缝切回写算法

💡 强力推荐:把 jj 刻入 VS Code 骨髓

为了让你写完 ['sepal_length', 'sepal_width'] 时不需要痛苦地去够左上角的 Esc,请立刻点击 VS Code 左下角齿轮 \rightarrow 打开 settings.json(或者按 Ctrl+Shift+P 输入 Open User Settings (JSON)),把这段大厂通用的无缝退模映射粘贴进去:

JSON

"vim.insertModeKeyBindings": [
    {
        "before": ["j", "j"],
        "after": ["<Esc>"]
    }
]

终极丝滑体验:你在写完 sepal_width 的一瞬间,右手食指连敲两下 jj(此时瞬间退出输入模式),接着顺手敲个 l(光标向右一格迈出单引号),接着敲个 A 进入当前行末尾插入状态,直接补个逗号 ,。

这套连招下来不到半秒钟,手掌完全悬停在键盘中央,体验极其丝滑。你可以当场在你的 features 列表格子里找找感觉,看看是不是那种熟悉的 Linux 黑客感觉又回来了?