快速开始

安装好 Yazi 后,使用下面的命令启动程序:

  1. yazi

q 退出,按 F1~ 打开帮助菜单。

Shell wrapper

我们建议使用这个 y shell wrapper,它可以在退出 Yazi 时切换当前工作目录(current working directory)。

bash function y() { local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd command yazi "$@" --cwd-file="$tmp" IFS= read -r -d '' cwd < "$tmp" [ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" rm -f -- "$tmp" } sh function y set tmp (mktemp -t "yazi-cwd.XXXXXX") command yazi $argv --cwd-file="$tmp" if read -z cwd < "$tmp"; and [ "$cwd" != "$PWD" ]; and test -d "$cwd" builtin cd -- "$cwd" end rm -f -- "$tmp" end sh def --env y [...args] { let tmp = (mktemp -t "yazi-cwd.XXXXXX") ^yazi ...$args --cwd-file $tmp let cwd = (open $tmp) if $cwd != $env.PWD and ($cwd | path exists) { cd $cwd } rm -fp $tmp } sh y() { set -- "$@" --cwd-file "$(mktemp -t yazi-cwd.XXXXXX)" command yazi "$@" shift $(($# - 1)) set -- "$(command cat < "$1"; printf .; rm -f -- "$1")" set -- "${1%.}" [ "$1" != "$PWD" ] && [ -d "$1" ] && command cd -- "$1" } elvish edit:add-var y~ {|@argv| use str use os use file var tmp = (os:temp-file) e:yazi $@argv --cwd-file=$tmp[name] var cwd = (slurp < $tmp) file:close $tmp os:remove $tmp[name] if (and (not-eq $cwd $pwd) (os:is-dir $cwd)) { cd $cwd } } powershell function y { $tmp = (New-TemporaryFile).FullName yazi.exe $args --cwd-file="$tmp" $cwd = Get-Content -Path $tmp -Encoding UTF8 if ($cwd -and $cwd -ne $PWD.Path -and (Test-Path -LiteralPath $cwd -PathType Container)) { Set-Location -LiteralPath (Resolve-Path -LiteralPath $cwd).Path } Remove-Item -Path $tmp } 创建文件 y.cmd,并将其放到你的 %PATH% 中。 cmd @echo off set tmpfile=%TEMP%\yazi-cwd.%random% yazi.exe %* --cwd-file="%tmpfile%" :: 如果文件不存在,则直接退出 if not exist "%tmpfile%" exit /b 0 :: 如果文件存在,则读取内容并切换目录 set /p cwd=<"%tmpfile%" if not "%cwd%"=="" if exist "%cwd%\NUL" ( cd /d "%cwd%" ) del "%tmpfile%" xonsh def _y(args): tmp = $(mktemp -t "yazi-cwd.XXXXXX") args.append(f"--cwd-file={tmp}") $[!yazi @(args)] with open(tmp) as f: cwd = f.read() import os if cwd != $PWD and os.path.isdir(cwd): cd @(cwd) rm -f -- @(tmp) aliases["y"] = _y

使用方法是:把这段函数复制到对应 shell 的配置文件中。

之后使用 y 而不是 yazi 来启动;按 q 退出后,你会看到 CWD 已发生变化。有时候你不想切换目录,这时按 Q 退出即可。

快捷键绑定

导航

在文件和目录之间导航时,你可以使用方向键 , 也可以使用类似 Vim 的按键 hjkl

按键绑定 替代按键 操作
k 光标上移
j 光标下移
l 进入当前悬停的目录
h 离开当前目录并进入其父目录

更多导航命令见下表。

按键绑定 操作
K 在预览中向上跳转 5 个单位
J 在预览中向下跳转 5 个单位
gg 将光标移动到顶部
G 将光标移动到底部
z 通过 fzf Cd 到某个目录,或 reveal 某个文件
Z 通过 zoxide Cd 到某个目录
gSpace 通过交互式提示 Cd 到某个目录,或 reveal 某个文件

选择

要选择文件和目录,可以使用以下命令。

按键绑定 操作
Space 切换当前悬停文件/目录的选中状态
v 进入可视模式(选择模式)
V 进入可视模式(取消选择模式)
Ctrl + a 选择所有文件
Ctrl + r 反选所有文件
Esc 取消选择

文件操作

要对已选中的文件/目录进行操作,可以使用以下命令。

按键绑定 操作
o 打开选中的文件
O 以交互方式打开选中的文件
Enter 打开选中的文件
Shift + Enter 以交互方式打开选中的文件(某些终端暂不支持)
Tab 显示文件信息
y Yank 选中的文件(复制)
x Yank 选中的文件(剪切)
p 粘贴已 Yank 的文件
P 粘贴已 Yank 的文件(若目标已存在则覆盖)
YX 取消 Yank 状态
d 将选中的文件移到回收站
D 永久删除选中的文件
a 创建文件(以 / 结尾则创建目录)
r 重命名选中的文件
. 切换隐藏文件的可见性

更多文件操作命令见下表。

按键绑定 操作
; 运行 shell 命令
: 运行 shell 命令(阻塞直到结束)
- 为已 Yank 的文件创建绝对路径符号链接
_ 为已 Yank 的文件创建相对路径符号链接
Ctrl + - 为已 Yank 的文件创建硬链接

复制路径

要复制路径,可以使用以下命令。

说明:cd 表示先按 c,再按 d

按键绑定 操作
cc 复制文件路径
cd 复制目录路径
cf 复制文件名
cn 复制不带扩展名的文件名

过滤文件

按键绑定 操作
f 过滤文件

查找文件

按键绑定 操作
/ 查找下一个文件
? 查找上一个文件
n 跳转到下一个匹配
N 跳转到上一个匹配

搜索文件

按键绑定 操作
s 使用 fd 按名称搜索文件
S 使用 ripgrep 按内容搜索文件
Ctrl + s 取消正在进行的搜索

排序

要对文件/目录进行排序,可以使用以下命令。

说明:,a 表示先按 ,,再按 a

按键绑定 操作
,m 按修改时间排序
,M 按修改时间倒序排序
,b 按创建时间排序
,B 按创建时间倒序排序
,e 按文件扩展名排序
,E 按文件扩展名倒序排序
,a 按字母顺序排序
,A 按字母顺序倒序排序
,n 按自然顺序排序
,N 按自然顺序倒序排序
,s 按大小排序
,S 按大小倒序排序
,r 随机排序

多标签页

按键绑定 操作
t 以当前工作目录创建新标签页
12、…、9 切换到第 N 个标签页
[ 切换到上一个标签页
] 切换到下一个标签页
{ 将当前标签页与前一个交换
} 将当前标签页与后一个交换
Ctrl + c 关闭当前标签页