chore: align IaC with today's package installs + PDF comparison docs
DevOps sync (2026-05-21): - Remove onlyoffice-desktopeditors from absent list (actively used) - Add gnome-keyring, rbw to common role (secrets migration) - Add perl-image-exiftool, icoutils, innoextract-git to dev-tools (Windows installer inspection) - Create fonts role: Inter, Cascadia Code, Fira, Source Sans, TeX Gyre - Create pdf role: zathura, zathura-pdf-mupdf, python-weasyprint - Register new roles in workstation.yml PDF comparison: - Add pdf-comparison docs with Quarto/Typst/Pandoc outputs - Add batch-pdf.sh script - Update yazi-cheatsheet.md - Ignore .quarto/ cache
This commit is contained in:
+143
-194
@@ -1,218 +1,167 @@
|
||||
# Yazi v26.5.6 - Cheatsheet & Daily Usage Tricks
|
||||
---
|
||||
title: "Yazi v26.5.6 Cheatsheet"
|
||||
author: "mw-pfeddersheim-workstation"
|
||||
date: "May 2026"
|
||||
---
|
||||
|
||||
Version: 26.5.6 (Arch Linux 2026-05-10) | Rust-based terminal file manager
|
||||
Config: ~/.config/yazi/ (keymap.toml, yazi.toml, theme.toml, init.lua)
|
||||
# Yazi Cheatsheet
|
||||
|
||||
============================================================
|
||||
QUICK START
|
||||
============================================================
|
||||
yazi # launch
|
||||
y # shell wrapper (cd persists on exit)
|
||||
q # quit (cwd applied)
|
||||
Q # quit without changing cwd
|
||||
F1 or ~ # show help / keybindings
|
||||
**Version:** 26.5.6 (Arch Linux 2026-05-10) **Config:** `~/.config/yazi/`
|
||||
|
||||
============================================================
|
||||
NAVIGATION (essential)
|
||||
============================================================
|
||||
h parent directory
|
||||
l enter dir / open hovered file
|
||||
j / k down / up
|
||||
H / L history back / forward
|
||||
Enter open file
|
||||
o open file (alternative)
|
||||
Tab toggle file details / info
|
||||
. toggle hidden files
|
||||
~ jump to home
|
||||
/ search forward
|
||||
? search backward
|
||||
n / N next / previous match
|
||||
f interactive filter (fuzzy)
|
||||
S search with fd
|
||||
g g go to top
|
||||
G go to bottom
|
||||
## Quick Start
|
||||
|
||||
============================================================
|
||||
FILE OPERATIONS
|
||||
============================================================
|
||||
Space toggle selection (multi-select)
|
||||
v visual mode (range select)
|
||||
Ctrl+A select all
|
||||
Esc clear selection
|
||||
y yank / copy
|
||||
p paste
|
||||
X cut
|
||||
x undo cut
|
||||
D delete to trash
|
||||
Shift+D permanent delete
|
||||
a create new file
|
||||
Shift+A create new directory
|
||||
R rename
|
||||
Shift+R bulk rename (opens editor)
|
||||
O "Open with..." menu
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `yazi` | Launch Yazi |
|
||||
| `y` | Shell wrapper (cd persists on exit) |
|
||||
| `q` | Quit normal (apply cwd) |
|
||||
| `Q` | Quit without cwd change |
|
||||
| `F1` | Show help |
|
||||
|
||||
============================================================
|
||||
TABS
|
||||
============================================================
|
||||
t new tab
|
||||
1-9 switch to tab N
|
||||
[ / ] previous / next tab
|
||||
W close current tab
|
||||
## Navigation
|
||||
|
||||
============================================================
|
||||
SORTING
|
||||
============================================================
|
||||
, m sort by modified (mtime)
|
||||
, M sort by modified (reverse)
|
||||
, c sort by created
|
||||
, C sort by created (reverse)
|
||||
, e sort by extension
|
||||
, E sort by extension (reverse)
|
||||
, a sort alphabetically
|
||||
, A sort alphabetically (reverse)
|
||||
, s sort by size
|
||||
, S sort by size (reverse)
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `h` | Parent directory |
|
||||
| `l` | Enter dir / open file |
|
||||
| `j` / `k` | Down / Up |
|
||||
| `H` / `L` | History back / forward |
|
||||
| `Enter` | Open hovered file |
|
||||
| `Tab` | Toggle file details |
|
||||
| `.` | Toggle hidden files |
|
||||
| `~` | Home directory (DE: Shift+^+Space) |
|
||||
| `g g` | Go to top |
|
||||
| `G` | Go to bottom |
|
||||
|
||||
============================================================
|
||||
SHELL & COMMANDS
|
||||
============================================================
|
||||
! drop into $SHELL here (block)
|
||||
: command line (yazi internal commands)
|
||||
Ctrl+S run an arbitrary shell command
|
||||
## Search
|
||||
|
||||
============================================================
|
||||
PLUGIN EMIT COMMANDS (used with : or ya emit)
|
||||
============================================================
|
||||
:cd <path> change directory
|
||||
:reveal <path> reveal a file in its parent dir
|
||||
:tab_create open new tab
|
||||
:tab_switch <N> switch to tab N
|
||||
:quit quit
|
||||
:yank yank selected
|
||||
:paste paste yanked
|
||||
:remove delete to trash
|
||||
:rename rename hovered
|
||||
:shell <cmd> run shell command
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `/` | Search forward |
|
||||
| `?` | Search backward |
|
||||
| `n` / `N` | Next / previous match |
|
||||
| `f` | Interactive filter (fuzzy) |
|
||||
| `S` | Search with fd |
|
||||
|
||||
============================================================
|
||||
CONFIGURATION (key files)
|
||||
============================================================
|
||||
keymap.toml custom keybindings
|
||||
yazi.toml behavior, previewers, open rules
|
||||
theme.toml colors, UI theme
|
||||
init.lua Lua startup script (plugins, status bar tweaks)
|
||||
~/.config/yazi/plugins/ plugin directory
|
||||
## File Operations
|
||||
|
||||
============================================================
|
||||
POWER TRICKS & BEST PRACTICES
|
||||
============================================================
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `Space` | Toggle selection |
|
||||
| `v` | Visual mode range select |
|
||||
| `Ctrl+A` | Select all |
|
||||
| `Esc` | Clear selection |
|
||||
| `y` | Yank (copy) |
|
||||
| `p` | Paste |
|
||||
| `X` | Cut |
|
||||
| `x` | Undo cut |
|
||||
| `D` | Delete to trash |
|
||||
| `Shift+D` | Permanent delete |
|
||||
| `a` | New file |
|
||||
| `Shift+A` | New directory |
|
||||
| `R` | Rename |
|
||||
| `Shift+R` | Bulk rename |
|
||||
| `O` | "Open with..." menu |
|
||||
|
||||
1. Shell Wrapper (cd persistence)
|
||||
Use the `y` wrapper script instead of raw `yazi` so your shell
|
||||
`cd`s into the directory you navigated to on exit.
|
||||
Install: https://yazi-rs.github.io/docs/quick-start/#shell-wrapper
|
||||
## Sorting (comma prefix)
|
||||
|
||||
2. Open files in default apps (xdg-open)
|
||||
Add to yazi.toml:
|
||||
[[opener.system_default]]
|
||||
run = "xdg-open \"$1\""
|
||||
for = "linux"
|
||||
desc = "System Default"
|
||||
[[open.rules]]
|
||||
name = "*"
|
||||
use = ["system_default"]
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `, m` | Modified (newest) |
|
||||
| `, M` | Modified reverse |
|
||||
| `, c` | Created (newest) |
|
||||
| `, C` | Created reverse |
|
||||
| `, e` | Extension (alpha) |
|
||||
| `, a` | Alphabetic |
|
||||
| `, s` | Size (largest) |
|
||||
| `, S` | Size (smallest, reverse) |
|
||||
|
||||
3. Drop to shell from anywhere
|
||||
Add to keymap.toml:
|
||||
[[mgr.prepend_keymap]]
|
||||
on = "!"
|
||||
for = "unix"
|
||||
run = 'shell "$SHELL" --block'
|
||||
desc = "Open $SHELL here"
|
||||
## Tabs
|
||||
|
||||
4. Close input with single Esc (no Vi mode)
|
||||
[[input.prepend_keymap]]
|
||||
on = "<Esc>"
|
||||
run = "close"
|
||||
desc = "Cancel input"
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `t` | New tab |
|
||||
| `1` ... `9` | Switch to tab |
|
||||
| `[` / `]` | Prev / next tab |
|
||||
| `W` | Close tab |
|
||||
|
||||
5. Copy to system clipboard on yank (Wayland)
|
||||
[[mgr.prepend_keymap]]
|
||||
on = "y"
|
||||
run = [ 'shell -- for path in %s; do echo "file://$path"; done | wl-copy -t text/uri-list', "yank" ]
|
||||
## Shell & Commands
|
||||
|
||||
6. cd to Git repo root
|
||||
[[mgr.prepend_keymap]]
|
||||
on = ["g", "r"]
|
||||
run = 'shell -- ya emit cd "$(git rev-parse --show-toplevel)"'
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `!` | Drop into shell here |
|
||||
| `:` | Command line |
|
||||
| `Ctrl+S` | Run shell command |
|
||||
|
||||
7. Smart tab - create tab + enter hovered dir
|
||||
Save plugin: ~/.config/yazi/plugins/smart-tab.yazi/main.lua
|
||||
--- @sync entry
|
||||
return { entry = function()
|
||||
local h = cx.active.current.hovered
|
||||
ya.emit("tab_create", h and h.cha.is_dir and { h.url } or { current = true })
|
||||
end }
|
||||
Bind in keymap.toml:
|
||||
[[mgr.prepend_keymap]]
|
||||
on = ["t", "t"] run = "plugin smart-tab"
|
||||
## Emit Commands (`:` prefix)
|
||||
|
||||
8. Performance: disable unnecessary image previews
|
||||
If you don't need image previews, disable them:
|
||||
[plugin]
|
||||
preloaders = []
|
||||
previewers = []
|
||||
Or for network mounts only:
|
||||
[[plugin.prepend_preloaders]]
|
||||
url = "/remote/**"
|
||||
run = "noop"
|
||||
| Command | Action |
|
||||
|---------|--------|
|
||||
| `:cd <path>` | Change directory |
|
||||
| `:reveal` | Reveal file in parent dir |
|
||||
| `:tab_create` | Open new tab |
|
||||
| `:tab_switch N` | Switch to tab N |
|
||||
| `:quit` | Quit Yazi |
|
||||
| `:yank` | Yank selected |
|
||||
| `:paste` | Paste yanked |
|
||||
| `:remove` | Trash |
|
||||
| `:rename` | Rename hovered |
|
||||
| `:shell <cmd>` | Run shell command |
|
||||
|
||||
9. Show username+hostname in header (init.lua)
|
||||
Header:children_add(function()
|
||||
if ya.target_family() ~= "unix" then return "" end
|
||||
return ui.Span(ya.user_name().."@"..ya.host_name()..":"):fg("blue")
|
||||
end, 500, Header.LEFT)
|
||||
## Power Tricks
|
||||
|
||||
10. Show symlink target in status bar (init.lua)
|
||||
Status:children_add(function(self)
|
||||
local h = self._current.hovered
|
||||
if h and h.link_to then
|
||||
return " -> "..tostring(h.link_to) else return ""
|
||||
end
|
||||
end, 3300, Status.LEFT)
|
||||
### 1. Shell Wrapper (cd persists)
|
||||
Use the `y` wrapper instead of raw `yazi` so your shell cds into the directory you navigated to on exit.
|
||||
|
||||
============================================================
|
||||
PLUGINS WORTH INSTALLING (yazi-rs/plugins)
|
||||
============================================================
|
||||
full-border.yazi full panel borders
|
||||
smart-enter.yazi open files or enter dirs with one key
|
||||
smart-paste.yazi paste without entering directory
|
||||
toggle-pane.yazi maximize/hide preview pane
|
||||
confirm-quit.yazi confirm quit when tabs are open
|
||||
no-status.yazi hide status bar for minimal UI
|
||||
mime-ext.yazi fast extension-based mime detection
|
||||
chmod.yazi change file permissions
|
||||
7zip.yazi archive support
|
||||
zoxide.yazi zoxide integration for jump history
|
||||
### 2. Clipboard on Yank (Wayland)
|
||||
Bind `y` in `keymap.toml` to `wl-copy -t text/uri-list` then yank for system clipboard integration.
|
||||
|
||||
============================================================
|
||||
DDS (Data Distribution Service) EVENTS
|
||||
============================================================
|
||||
Yazi broadcasts events via DDS socket for inter-process comms:
|
||||
cd directory changed
|
||||
hover file hovered
|
||||
yank files yanked
|
||||
bulk bulk rename in progress
|
||||
Use DDS to build custom integrations (e.g. folder-specific rules).
|
||||
### 3. Git Root Jump
|
||||
Bind `g r` to `ya emit cd "$(git rev-parse --show-toplevel)"`
|
||||
|
||||
============================================================
|
||||
DAILY DRILL (memorization order)
|
||||
============================================================
|
||||
j/k move | l enter | h back
|
||||
Space select | y copy | p paste | X cut
|
||||
D delete | R rename | a create | . hidden
|
||||
/ search | f filter | g g top | G bottom
|
||||
t tab | 1-9 switch | ! shell | q quit
|
||||
### 4. Escape Closes Input
|
||||
In `keymap.toml` input section: map `Esc` to `close` (skip vim mode).
|
||||
|
||||
============================================================
|
||||
Generated 2026-05-21 | Sources: yazi-rs.github.io/docs, official tips page
|
||||
### 5. Disable Image Previews
|
||||
In `yazi.toml` `plugin` section: `preloaders = []` and `previewers = []`.
|
||||
For network mounts: `url = /remote/** run = noop`.
|
||||
|
||||
### 6. Hostname in Header
|
||||
In `init.lua`: `Header:children_add` with `user_name()` + `host_name()` spans.
|
||||
|
||||
### 7. Show Symlink Target in Status Bar
|
||||
In `init.lua`: `Status:children_add` with `h.link_to`.
|
||||
|
||||
## Configuration Files
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `keymap.toml` | Custom key bindings |
|
||||
| `yazi.toml` | Behavior, preview rules, openers |
|
||||
| `theme.toml` | Colors and UI theme |
|
||||
| `init.lua` | Lua startup script |
|
||||
| `plugins/` | Plugin directory |
|
||||
|
||||
## Recommended Plugins
|
||||
|
||||
| Plugin | Purpose |
|
||||
|--------|---------|
|
||||
| `smart-enter` | One key: open file or enter dir |
|
||||
| `smart-paste` | Paste without entering dir |
|
||||
| `smart-tab` | New tab + enter hovered dir |
|
||||
| `toggle-pane` | Maximize / hide preview pane |
|
||||
| `full-border` | Full panel borders |
|
||||
| `confirm-quit` | Confirm on multi-tab |
|
||||
| `zoxide` | Zoxide dir jumping |
|
||||
| `chmod` | Change file permissions |
|
||||
|
||||
## Daily Drill
|
||||
|
||||
| Area | Keys |
|
||||
|------|------|
|
||||
| **Nav** | `j/k` move / `l` enter / `h` back |
|
||||
| **Files** | `Space` select / `y` copy / `p` paste / `X` cut |
|
||||
| **Delete** | `D` trash / `R` rename / `a` create |
|
||||
| **Search** | `/` search / `f` filter / `g` top / `G` bottom |
|
||||
| **Tabs** | `t` new / `1-9` switch / `W` close |
|
||||
| **Misc** | `!` shell / `q` quit / `F1` help |
|
||||
|
||||
Reference in New Issue
Block a user