Yazi is a terminal file manager written in rust. It can integrate with neovim and can be heavily customized.
Source code
Installation
cargo install yazi-fm yazi-cli
Navigation
| Keys |
Action |
| ++k++ or ++arrow-up++ |
Move the cursor up |
| ++j++ or ++arrow-down++ |
Move the cursor down |
| ++l++ or ++arrow-right++ |
Enter hovered directory |
| ++h++ or ++arrow-left++ |
Leave the current directory and into its parent |
| ++shift+k++ |
Seek up 5 units in the preview |
| ++shift+j++ |
Seek down 5 units in the preview |
| ++g++ ++g++ |
Move cursor to the top |
| ++shift+g++ |
Move cursor to the bottom |
| ++z++ |
Jump to a directory using zoxide |
| ++shift+z++ |
Jump to a directory or reveal a file using fzf |
Selection
| Keys |
Action |
| ++space++ |
Toggle selection of hovered file/directory |
| ++v++ |
Enter visual mode (selection mode) |
| ++shift+v++ |
Enter visual mode (unset mode) |
| ++ctrl+a++ |
Select all files |
| ++ctrl+r++ |
Inverse selection of all files |
| ++esc++ |
Cancel selection |
File Operations
| Keys |
Action |
| ++o++ |
Open selected files |
| ++shift+o++ |
Open selected files interactively |
| ++enter++ |
Open selected files |
| ++shift+enter++ |
Open selected files interactively (some terminals don't support it yet) |
| ++tab++ |
Show the file information |
| ++y++ |
Yank selected files (copy) |
| ++x++ |
Yank selected files (cut) |
| ++p++ |
Paste yanked files |
| ++shift+p++ |
Paste yanked files (overwrite if the destination exists) |
| ++shift+y++ or ++shift+x++ |
Cancel the yank status |
| ++d++ |
Trash selected files |
| ++shift+d++ |
Permanently delete selected files |
| ++a++ |
Create a file (ends with / for directories) |
| ++r++ |
Rename selected file(s) |
| ++period++ |
Toggle the visibility of hidden files |
| ++semicolon++ |
Run a shell command |
| ++colon++ |
Run a shell command (block until finishes) |
| ++minus++ |
Symlink the absolute path of yanked files |
| ++underscore++ |
Symlink the relative path of yanked files |
| ++ctrl+minus++ |
Hardlink yanked files |
Copy Paths
| Keys |
Action |
| ++c++ ++c++ |
Copy the file path |
| ++c++ ++d++ |
Copy the directory path |
| ++c++ ++f++ |
Copy the filename |
| ++c++ ++n++ |
Copy the filename without extension |
Filter Files
| Keys |
Action |
| ++f++ |
Filter files |
Find Files
| Keys |
Action |
| ++slash++ |
Find next file |
| ++question++ |
Find previous file |
| ++n++ |
Go to the next found |
| ++shift+n++ |
Go to the previous found |
Search Files
| Keys |
Action |
| ++s++ |
Search files by name using fd |
| ++shift+s++ |
Search files by content using ripgrep |
| ++ctrl+s++ |
Cancel the ongoing search |
Sorting
| Keys |
Action |
| ++comma++ ++m++ |
Sort by modified time |
| ++comma++ ++shift+m++ |
Sort by modified time (reverse) |
| ++comma++ ++b++ |
Sort by birth time |
| ++comma++ ++shift+b++ |
Sort by birth time (reverse) |
| ++comma++ ++e++ |
Sort by file extension |
| ++comma++ ++shift+e++ |
Sort by file extension (reverse) |
| ++comma++ ++a++ |
Sort alphabetically |
| ++comma++ ++shift+a++ |
Sort alphabetically (reverse) |
| ++comma++ ++n++ |
Sort naturally |
| ++comma++ ++shift+n++ |
Sort naturally (reverse) |
| ++comma++ ++s++ |
Sort by size |
| ++comma++ ++shift+s++ |
Sort by size (reverse) |
| ++comma++ ++r++ |
Sort randomly |
Multi-Tab
| Keys |
Action |
| ++t++ |
Create a new tab with CWD |
| ++0++ to ++9++ |
Switch to the n-th tab |
| ++bracket-left++ |
Switch to the previous tab |
| ++bracket-right++ |
Switch to the next tab |
| ++brace-left++ |
Swap current tab with previous tab |
| ++brace-right++ |
Swap current tab with next tab |
| ++ctrl+c++ |
Close the current tab |