快速开始
安装好 Yazi 后,使用下面的命令启动程序:
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 的按键 h、j、k、l:
| 按键绑定 | 替代按键 | 操作 |
|---|---|---|
| k | ↑ | 光标上移 |
| j | ↓ | 光标下移 |
| l | → | 进入当前悬停的目录 |
| h | ← | 离开当前目录并进入其父目录 |
更多导航命令见下表。
| 按键绑定 | 操作 |
|---|---|
| K | 在预览中向上跳转 5 个单位 |
| J | 在预览中向下跳转 5 个单位 |
| g ⇒ g | 将光标移动到顶部 |
| G | 将光标移动到底部 |
| z | 通过 fzf Cd 到某个目录,或 reveal 某个文件 |
| Z | 通过 zoxide Cd 到某个目录 |
| g ⇒ Space | 通过交互式提示 Cd 到某个目录,或 reveal 某个文件 |
选择
要选择文件和目录,可以使用以下命令。
| 按键绑定 | 操作 |
|---|---|
| Space | 切换当前悬停文件/目录的选中状态 |
| v | 进入可视模式(选择模式) |
| V | 进入可视模式(取消选择模式) |
| Ctrl + a | 选择所有文件 |
| Ctrl + r | 反选所有文件 |
| Esc | 取消选择 |
文件操作
要对已选中的文件/目录进行操作,可以使用以下命令。
| 按键绑定 | 操作 |
|---|---|
| o | 打开选中的文件 |
| O | 以交互方式打开选中的文件 |
| Enter | 打开选中的文件 |
| Shift + Enter | 以交互方式打开选中的文件(某些终端暂不支持) |
| Tab | 显示文件信息 |
| y | Yank 选中的文件(复制) |
| x | Yank 选中的文件(剪切) |
| p | 粘贴已 Yank 的文件 |
| P | 粘贴已 Yank 的文件(若目标已存在则覆盖) |
| Y 或 X | 取消 Yank 状态 |
| d | 将选中的文件移到回收站 |
| D | 永久删除选中的文件 |
| a | 创建文件(以 / 结尾则创建目录) |
| r | 重命名选中的文件 |
| . | 切换隐藏文件的可见性 |
更多文件操作命令见下表。
| 按键绑定 | 操作 |
|---|---|
| ; | 运行 shell 命令 |
| : | 运行 shell 命令(阻塞直到结束) |
| - | 为已 Yank 的文件创建绝对路径符号链接 |
| _ | 为已 Yank 的文件创建相对路径符号链接 |
| Ctrl + - | 为已 Yank 的文件创建硬链接 |
复制路径
要复制路径,可以使用以下命令。
说明:c ⇒ d 表示先按 c,再按 d。
| 按键绑定 | 操作 |
|---|---|
| c ⇒ c | 复制文件路径 |
| c ⇒ d | 复制目录路径 |
| c ⇒ f | 复制文件名 |
| c ⇒ n | 复制不带扩展名的文件名 |
过滤文件
| 按键绑定 | 操作 |
|---|---|
| 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 | 以当前工作目录创建新标签页 |
| 1、2、…、9 | 切换到第 N 个标签页 |
| [ | 切换到上一个标签页 |
| ] | 切换到下一个标签页 |
| { | 将当前标签页与前一个交换 |
| } | 将当前标签页与后一个交换 |
| Ctrl + c | 关闭当前标签页 |
