Skip to content

Vim 模式

Vim 模式 是 tessoa 的一套全键盘操作方式:打开之后,没有输入框聚焦时,字母键不再是打字,而是命令——jk 上下移动,l 进入目录,y 复制。用过 Vim 或 yazi 的人可以直接上手,本页也把整张键位表列了出来——表里给的是出厂默认,每一条都可以改,见 修改 Vim 键位

本页假设你已经在设置里打开了这个开关。没打开的话,先按 Ctrl+Shift+P 打开设置,在 操作 组里找到 Vim 模式(j/k 键盘导航)

怎么知道现在归谁管

打开开关之后,窗口右下角常驻一个小徽章,写着当前处于哪种状态:

徽章意思
NOR普通状态,字母键是命令
VIS可视模式,移动光标就是扩大选择范围
SIDE焦点在侧栏,用的是侧栏那套键
FIND光标在过滤框或搜索框里,这时打字就是打字

按下前缀键(例如 gw,\)之后徽章旁边会回显你已经按了什么,同时弹出一张小浮层列出可以接哪些键。浮层的标题是你刚按下的那个键加上 后继键,每一行写着接下去按哪个键、做的是什么。忘了下一步按什么就等它弹出来。

任何时候按 ? 都能调出完整的 Vim 键位速查 面板,再按一次 ?、按 Esc 或者单击任意处关闭。

导航与历史

作用
j / k光标下移 / 上移。可以带计数,5j 是往下五行
h / l回上一级 / 进入目录或打开文件
gg / G跳到顶部 / 底部。12G 跳到第 12 行
J / K下翻 / 上翻半页,等同 Ctrl+DCtrl+U
H / L历史后退 / 前进
gh回主目录
gr打开导航栏的历史下拉:j/k 挑一个,Enter 跳过去,Esc 关掉
i编辑路径:打开地址编辑器直接输入,Tab 补全下一级,Enter 前往

H 退回之前去过的目录时,光标落回你离开它时选中的那一行,不是回到第一行;按 h 回上一级时,光标落在你刚出来的那个子目录上。

历史下拉开着时,ggG5j 这些计数和跳转键照样管用,管的是下拉里的那份列表。

选择与文件操作

作用
Space勾选当前项并下移一行。空格归了快速查看时(macOS 出厂如此),这一条的出厂键序是 \ Space
v进入可视模式,移动光标即扩大选择;再按 v 提交,按 Esc 取消
Ctrl+A全选 / 取消全选
y / x / p复制 / 剪切 / 粘贴
d删除到回收站,u 可以撤销
u撤销
m重命名
a / A新建文件 / 新建文件夹。建好之后直接进入改名状态
t打开标签菜单,打字过滤、回车勾选
M打开右键菜单。光标停在某一行时是文件菜单,没有光标时是背景菜单

新建文件用的是 a、新建文件夹用的是 A,两者都是先按默认名建出来,再让你就地改名。

分屏与标签页

作用
wv / ws左右分屏 / 上下分屏。分完焦点落在新的那一块
wh 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打开或收起侧边的详情面板

+- 只在当前这种视图的挡位里走,走到头就停住,不会跨到别的视图去——换视图是 zzzd 那一族的事。

查找、排序与杂项

作用
/聚焦过滤框,过滤当前列表
\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下翻 / 上翻半页
{ / }跳到上一个 / 下一个分组
[ / ]切到上一栏 / 下一栏的当前页组头,到两端不循环
gl r b t s p直达 布局 / 最近 / 书签 / 标签 / 存储 / 位置
go把这一行的目录开成新标签页,和文件区里是同一个键
l / h在目录行展开或打开 / 折叠或回到上一层;在组头切到本栏下一页 / 上一页
Space在有子级的行折叠或展开子级;在组头折叠或展开整栏
m / M就地重命名 / 打开这一行的菜单
a / A在本分组新建 / 新建子级
d删除或移出,和行菜单里的 删除 是同一个动作
c / L给标签换色 / 锁定或解锁布局
/侧栏快速搜索。按 Esc 回到列表时结果会留着
\g / \r匹配档:通配符 / 正则。和文件区里是同一档
Esc依次是:关掉就地编辑 → 清空搜索 → 退出侧栏(面板保持展开)
wh j k l焦点回到文件区

侧栏功能页和上下分栏的鼠标操作见 侧栏与功能页。组头是标签条上的当前功能页标题;在已折叠栏上用 h / l 切页会保持折叠,按 Space 展开。目录行上的树操作不受影响。

警告

焦点在侧栏时,没有绑定的字母键会被吃掉,不会漏到文件区。这是有意的:否则你以为在操作侧栏、顺手按了 p,剪贴板就会被粘进当前目录,而那是撤销起来很麻烦的事。Ctrl 组合键不受影响,仍然照常生效。

修改 Vim 键位

Vim 的键位可以逐条改,改的地方是设置里单独的一页。页顶的切换器分 文件区侧栏命令面板 三张表——文件区和侧栏就是本页上面两套键,命令面板那张管的是设置面板里 Normal 模式的移动键(j/k、下潜、上浮这几条)。三张表各改各的,互不相干;Ctrl+1/2/3 也能切表,换表时筛选词会清空。

  1. 打开设置,在 操作 组里单击 Vim 键位
  2. 搜索命令或键序 那一格里打字,找到要改的那条命令。
  3. 单击那一行,键格显示 按下要绑的键序…(Esc 取消 · 退格解绑)
  4. 按下第一个键。要把它绑成单键命令,按 Enter 确认;要绑成两键序列(像 ggwv 那样),直接按第二个键,按完当场生效。
  5. 按错了用 Backspace 退一格:已经录了第一个键就退掉那一键,还没录就把这一行解绑。Esc 取消整次录入。
  6. 要把某条命令的键序空出来,选中那一行后单击行尾的 解绑,这一条变成 未绑定
  7. 要把某一条放回出厂键位,单击那一行行尾的 默认;要整张表放回,用页面里的 重置全部——它只重置当前显示的那一张,并弹一条 已恢复默认:Vim 键位 · 〈表名〉,上面带 撤销

命令按 移动导航选择文件操作视图与排序分屏与标签页其他 七组排列,顺序和 ? 速查面板一致。键格里画的是一枚或两枚键帽——gg 是先后按两次 g,不是一个组合键,两枚键帽之间那道空当就是这个意思。

tessoa 设置里的「Vim 键位」页:顶部一行是 ‹ 返回、页名、「文件区 / 侧栏 / 命令面板」三段切换器和「重置全部」,下面是搜索框和一条说明,再往下按「移动」「导航」分组列出命令,每行右端是前缀「快捷键」的对侧键格和一到两枚键帽,选中行行尾有一枚「解绑」tessoa 设置里的「Vim 键位」页:顶部一行是 ‹ 返回、页名、「文件区 / 侧栏 / 命令面板」三段切换器和「重置全部」,下面是搜索框和一条说明,再往下按「移动」「导航」分组列出命令,每行右端是前缀「快捷键」的对侧键格和一到两枚键帽,选中行行尾有一枚「解绑」
到顶部 那一行的键格是分开的两枚键帽 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+TF2Delete 这些照旧能用,关掉 Vim 模式之后一切也回到原样。

反过来,同一颗键在两边各绑了不同的功能时,Vim 优先:开着 Vim 模式,那条快捷键不会触发。这种撞车两个键位页都会指出来——表头下的冲突条写着撞了几处,冲突行行尾的按钮写作 让位,单击它把这颗键让给对面那张表。在哪一页单击 让位,解绑的就是哪一页的绑定。

Vim 键位不在 快捷键 页里改:那一页管的是 Ctrl 系的组合键和鼠标按钮,Vim 的键在 Vim 键位 那一页,见 修改 Vim 键位

tessoa 用户文档