Vim 模式
Vim 模式 是 tessoa 的一套全键盘操作方式:打开之后,没有输入框聚焦时,字母键不再是打字,而是命令——j 和 k 上下移动,l 进入目录,y 复制。用过 Vim 或 yazi 的人可以直接上手,本页也把整张键位表列了出来——表里给的是出厂默认,每一条都可以改,见 修改 Vim 键位。
本页假设你已经在设置里打开了这个开关。没打开的话,先按 Ctrl+Shift+P 打开设置,在 操作 组里找到 Vim 模式(j/k 键盘导航)。
怎么知道现在归谁管
打开开关之后,窗口右下角常驻一个小徽章,写着当前处于哪种状态:
| 徽章 | 意思 |
|---|---|
| NOR | 普通状态,字母键是命令 |
| VIS | 可视模式,移动光标就是扩大选择范围 |
| SIDE | 焦点在侧栏,用的是侧栏那套键 |
| FIND | 光标在过滤框或搜索框里,这时打字就是打字 |
按下前缀键(例如 g、w、,、\)之后徽章旁边会回显你已经按了什么,同时弹出一张小浮层列出可以接哪些键。浮层的标题是你刚按下的那个键加上 后继键,每一行写着接下去按哪个键、做的是什么。忘了下一步按什么就等它弹出来。
任何时候按 ? 都能调出完整的 Vim 键位速查 面板,再按一次 ?、按 Esc 或者单击任意处关闭。
导航与历史
| 键 | 作用 |
|---|---|
j / k | 光标下移 / 上移。可以带计数,5j 是往下五行 |
h / l | 回上一级 / 进入目录或打开文件 |
gg / G | 跳到顶部 / 底部。12G 跳到第 12 行 |
J / K | 下翻 / 上翻半页,等同 Ctrl+D 和 Ctrl+U |
H / L | 历史后退 / 前进 |
gh | 回主目录 |
gr | 打开导航栏的历史下拉:j/k 挑一个,Enter 跳过去,Esc 关掉 |
i | 编辑路径:打开地址编辑器直接输入,Tab 补全下一级,Enter 前往 |
用 H 退回之前去过的目录时,光标落回你离开它时选中的那一行,不是回到第一行;按 h 回上一级时,光标落在你刚出来的那个子目录上。
历史下拉开着时,gg、G、5j 这些计数和跳转键照样管用,管的是下拉里的那份列表。
选择与文件操作
| 键 | 作用 |
|---|---|
Space | 勾选当前项并下移一行。空格归了快速查看时(macOS 出厂如此),这一条的出厂键序是 \ Space |
v | 进入可视模式,移动光标即扩大选择;再按 v 提交,按 Esc 取消 |
| Ctrl+A | 全选 / 取消全选 |
y / x / p | 复制 / 剪切 / 粘贴 |
d | 删除到回收站,u 可以撤销 |
u | 撤销 |
m | 重命名 |
a / A | 新建文件 / 新建文件夹。建好之后直接进入改名状态 |
t | 打开标签菜单,打字过滤、回车勾选 |
M | 打开右键菜单。光标停在某一行时是文件菜单,没有光标时是背景菜单 |
新建文件用的是 a、新建文件夹用的是 A,两者都是先按默认名建出来,再让你就地改名。
分屏与标签页
| 键 | 作用 |
|---|---|
wv / ws | 左右分屏 / 上下分屏。分完焦点落在新的那一块 |
w 加 h j k l | 往那个方向移动窗格焦点 |
wq | 关闭当前窗格 |
gt / gT | 下一个 / 上一个标签页 |
gn | 新建标签页 |
go | 把光标停着的那个文件夹开成新标签页,见 在新标签页中打开 |
gc | 关闭当前标签页 |
gC | 关闭其他标签页 |
gH / gL | 关闭左侧 / 右侧的标签页 |
关标签页这一族用的是 g 前缀,和 gt / gn 排在一起——它们改的都是「标签栏上有哪几页」。四个键与标签上右键单击弹出的那个菜单一一对应,见 标签页与分屏。
视图与显示
z 前缀管的是「这个列表长什么样」,对应的是底栏右下角那一簇按钮:
| 键 | 作用 |
|---|---|
zd / zi / zc / zg | 直接切到 详细列表 / 图标 / 分栏 / 画廊 |
zz | 在四种视图之间循环,转到头会绕回来 |
+ / - | 当前视图里放大 / 缩小一档。可以带计数,按住不放会连着走 |
= | 回到默认那一档 |
ze | 递归展开当前目录下的全部子目录 |
zD / zF | 显示或隐藏 文件夹 / 文件 |
zp | 打开或收起侧边的详情面板 |
+ 和 - 只在当前这种视图的挡位里走,走到头就停住,不会跨到别的视图去——换视图是 zz 和 zd 那一族的事。
查找、排序与杂项
| 键 | 作用 |
|---|---|
/ | 聚焦过滤框,过滤当前列表 |
\g / \r | 匹配档:通配符 / 正则。再按一次灭回模糊,见 文件操作 |
: | 打开设置 |
, 加 n s m r | 排序:按名称 / 大小 / 修改时间 / 反转方向 |
,d | 在 混排、文件夹优先、文件优先 之间循环 |
,g | 开关分组,再按一次回到你上次用的那个分组依据 |
. | 显示或隐藏隐藏文件 |
R | 刷新当前目录,等同 F5。已经算好的目录统计会留着 |
! | 在终端中打开当前目录 |
? | 打开键位速查面板 |
| Esc | 依次是:清掉按了一半的键序 → 退出可视模式 → 清空过滤 → 清除勾选 |
排序用同一个键按第二次就是翻转方向,跟单击列头的行为一致。
刷新取的是大写 R:小写的 r 已经在 ,r(反转排序方向)和 \r(正则档)里当第二个键用,裸 r 再占一个动作,会让「按了 r 之后发生什么」取决于你前面有没有按过前缀键。
侧栏(SIDE)
按 e 把焦点交给侧栏,徽章变成 SIDE,这时用的是另一套键。再按一次 e 就退出并把侧栏收起来。在最左边那一块窗格里按 w 再按 h,走到头也会进侧栏。
| 键 | 作用 |
|---|---|
e | 进侧栏;已在侧栏时退出并收起面板 |
j / k | 上下移动,同样支持计数 |
J / K | 下翻 / 上翻半页 |
{ / } | 跳到上一个 / 下一个分组 |
| [ / ] | 切到上一栏 / 下一栏的当前页组头,到两端不循环 |
g 加 l r b t s p | 直达 布局 / 最近 / 书签 / 标签 / 存储 / 位置 |
go | 把这一行的目录开成新标签页,和文件区里是同一个键 |
l / h | 在目录行展开或打开 / 折叠或回到上一层;在组头切到本栏下一页 / 上一页 |
Space | 在有子级的行折叠或展开子级;在组头折叠或展开整栏 |
m / M | 就地重命名 / 打开这一行的菜单 |
a / A | 在本分组新建 / 新建子级 |
d | 删除或移出,和行菜单里的 删除 是同一个动作 |
c / L | 给标签换色 / 锁定或解锁布局 |
/ | 侧栏快速搜索。按 Esc 回到列表时结果会留着 |
\g / \r | 匹配档:通配符 / 正则。和文件区里是同一档 |
| Esc | 依次是:关掉就地编辑 → 清空搜索 → 退出侧栏(面板保持展开) |
w 加 h j k l | 焦点回到文件区 |
侧栏功能页和上下分栏的鼠标操作见 侧栏与功能页。组头是标签条上的当前功能页标题;在已折叠栏上用 h / l 切页会保持折叠,按 Space 展开。目录行上的树操作不受影响。
焦点在侧栏时,没有绑定的字母键会被吃掉,不会漏到文件区。这是有意的:否则你以为在操作侧栏、顺手按了 p,剪贴板就会被粘进当前目录,而那是撤销起来很麻烦的事。Ctrl 组合键不受影响,仍然照常生效。
修改 Vim 键位
Vim 的键位可以逐条改,改的地方是设置里单独的一页。页顶的切换器分 文件区、侧栏、命令面板 三张表——文件区和侧栏就是本页上面两套键,命令面板那张管的是设置面板里 Normal 模式的移动键(j/k、下潜、上浮这几条)。三张表各改各的,互不相干;Ctrl+1/2/3 也能切表,换表时筛选词会清空。
- 打开设置,在 操作 组里单击 Vim 键位。
- 在 搜索命令或键序 那一格里打字,找到要改的那条命令。
- 单击那一行,键格显示 按下要绑的键序…(Esc 取消 · 退格解绑)。
- 按下第一个键。要把它绑成单键命令,按 Enter 确认;要绑成两键序列(像
gg、wv那样),直接按第二个键,按完当场生效。 - 按错了用 Backspace 退一格:已经录了第一个键就退掉那一键,还没录就把这一行解绑。Esc 取消整次录入。
- 要把某条命令的键序空出来,选中那一行后单击行尾的 解绑,这一条变成 未绑定。
- 要把某一条放回出厂键位,单击那一行行尾的 默认;要整张表放回,用页面里的 重置全部——它只重置当前显示的那一张,并弹一条 已恢复默认:Vim 键位 · 〈表名〉,上面带 撤销。
命令按 移动、导航、选择、文件操作、视图与排序、分屏与标签页、其他 七组排列,顺序和 ? 速查面板一致。键格里画的是一枚或两枚键帽——gg 是先后按两次 g,不是一个组合键,两枚键帽之间那道空当就是这个意思。


g g——按两次,不是一个组合键。每行左侧那格前缀 快捷键 的空心键帽是同一功能在快捷键页的绑定;顶上那条灰字只在 Vim 模式关着的时候出现。改完之后,? 速查面板和前缀键浮层里写的键跟着变,不用重启。
Vim 模式关着的时候这一页照样能改。 页面顶部会多一条说明 Vim 模式当前关闭:这里的键位已保存,但不会生效——先把键调顺手、再回去打开开关,是很自然的顺序。
有几个键不让绑
按下之后被拒绝时,那一行下面出现一句红字说明原因,同时留在录入状态,换一个键接着按就行。
| 你按的 | 页面上写的 |
|---|---|
| 数字键,而且是在第一个键的位置上 | 数字键留给计数前缀(如 3j),不能绑 |
| ? | ? 留给速查面板,不能绑 |
| 已经是某条两键序列开头的那个键,而你想按 Enter 把它确认成单键 | 已是序列首键,不能再作单键命令 |
| 已经是单键命令的那个键,而你想拿它当序列的开头 | 已是单键命令,不能再作序列首键 |
后两条是同一件事的两面:一个键要么按下去就执行,要么按下去等第二个键,两样不能都是——否则其中一条永远轮不到。
绑到一条已经被别的命令占着的键序上不会被拒绝:原来那条命令让位变成 未绑定,和 快捷键 页的规矩一致。
对侧键列
文件区那张表的每一行还多一格,前缀写着 快捷键,画的是同一个功能在 快捷键 页里绑的键——「按 y 和按 Ctrl+C 是不是同一件事」,在这一格就能看出来。单击那一格跳到快捷键页并定位到那一行;对面没有绑定时写 未绑定,同样可以点过去补一个。快捷键页上有对称的一列,前缀写 Vim。
和弦入口
文件区那张表的页底单列一组 和弦入口(Ctrl 系白名单):Ctrl+D(向下半页)、Ctrl+U(向上半页)、Ctrl+W(窗口前缀)。它们是既有命令的第二入口,不可重绑——列在这里是让你看清这三枚和弦此刻归谁:
| 这一行画的是 | 意思 |
|---|---|
| 实心键帽 | 这枚和弦归 Vim,按下就是表里那条命令 |
| 空心键帽,旁边写 快捷键「××」优先 | 一条全局快捷键占用着它,Vim 收不到这枚和弦。单击行尾的 解绑快捷键 解除那条快捷键,和弦交还给 Vim |
| 空心键帽,旁边写 左右分屏已不是两键序列,这枚和弦当前不生效 | 你改掉了 wv 一族的首键,Ctrl+W 识别不出前缀,按下后原样放行 |
解绑快捷键 的后果写在按钮名字里:占用这枚和弦的那条快捷键(出厂是 关闭标签页)会失去快捷键。
和普通快捷键的关系
Vim 模式只接管没有输入框聚焦时的裸字母键。这带来两条结果:
- 光标在过滤框、改名框、搜索框里时,打字就是打字,中文输入法也正常。
- 引擎不认识的键原样放行,交给普通快捷键处理。所以 Ctrl+T、F2、Delete 这些照旧能用,关掉 Vim 模式之后一切也回到原样。
反过来,同一颗键在两边各绑了不同的功能时,Vim 优先:开着 Vim 模式,那条快捷键不会触发。这种撞车两个键位页都会指出来——表头下的冲突条写着撞了几处,冲突行行尾的按钮写作 让位,单击它把这颗键让给对面那张表。在哪一页单击 让位,解绑的就是哪一页的绑定。
Vim 键位不在 快捷键 页里改:那一页管的是 Ctrl 系的组合键和鼠标按钮,Vim 的键在 Vim 键位 那一页,见 修改 Vim 键位。