readmes/mini-files.md
See more details in Features and Documentation.
[!NOTE] This was previously hosted at a personal
echasnovskiGitHub account. It was transferred to a dedicated organization to improve long term project stability. See more details here.
⦿ This is a part of mini.nvim library. Please use this link if you want to mention this module.
⦿ All contributions (issues, pull requests, discussions, etc.) are done inside of 'mini.nvim'.
⦿ See whole library documentation to learn about general design principles, disable/configuration recipes, and more.
⦿ See MiniMax for a full config example that uses this module.
If you want to help this project grow but don't know where to start, check out contributing guides of 'mini.nvim' or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories.
https://github.com/nvim-mini/mini.nvim/assets/24854248/530483a5-fe9a-4e18-9813-a6d609fc89ff
Navigate file system using column view (Miller columns) to display nested directories. See :h MiniFiles-navigation for overview.
Opt-in preview of file or directory under cursor.
Manipulate files and directories by editing text buffers: create, delete, copy, rename, move. See :h MiniFiles-manipulation for overview.
Use as default file explorer instead of netrw.
Configurable:
See :h MiniFiles-examples for some common configuration examples.
Notes:
This module is written and thoroughly tested on Linux. Support for other platform/OS (like Windows or MacOS) is a goal, but there is no guarantee.
This module silently reacts to not enough permissions:
For full experience needs (still works without any of suggestions):
Run :lua MiniFiles.open().
Navigate:
j/k to navigate down/up.l to expand entry under cursor: show directory or open file in the most recent window.h to go to parent directory.m<char> to set directory path of focused window as bookmark <char>. Jump to it with '<char>. Go back to before the latest jump with ''.g? for more information about other available mappings and bookmarks.$, G, f/t, etc.).For deeper overview, see :h MiniFiles-navigation.
Navigate to the directory in which manipulation should be done.
Edit buffer in the way representing file system action:
file or dir/.dir/file or dir/nested/.Press =; read confirmation dialog; confirm with y/<CR> or not confirm with n/<Esc>.
For deeper overview, see :h MiniFiles-manipulation.
This plugin can be installed as part of 'mini.nvim' library (recommended) or as a standalone Git repository.
There are two branches to install from:
main (default, recommended) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled).stable will be updated only upon releases with code tested during public beta-testing phase in main branch.Here are code snippets for some common installation methods (use only one):
<details> <summary>With <a href="https://nvim-mini.org/mini.nvim/readmes/mini-deps">mini.deps</a></summary>'mini.nvim' library:
| Branch | Code snippet |
|---|---|
| Main | Follow recommended 'mini.deps' installation |
| Stable | Follow recommended 'mini.deps' installation |
Standalone plugin:
| Branch | Code snippet |
|---|---|
| Main | add('nvim-mini/mini.files') |
| Stable | add({ source = 'nvim-mini/mini.files', checkout = 'stable' }) |
'mini.nvim' library:
| Branch | Code snippet |
|---|---|
| Main | { 'nvim-mini/mini.nvim', version = false }, |
| Stable | { 'nvim-mini/mini.nvim', version = '*' }, |
Standalone plugin:
| Branch | Code snippet |
|---|---|
| Main | { 'nvim-mini/mini.files', version = false }, |
| Stable | { 'nvim-mini/mini.files', version = '*' }, |
'mini.nvim' library:
| Branch | Code snippet |
|---|---|
| Main | Plug 'nvim-mini/mini.nvim' |
| Stable | Plug 'nvim-mini/mini.nvim', { 'branch': 'stable' } |
Standalone plugin:
| Branch | Code snippet |
|---|---|
| Main | Plug 'nvim-mini/mini.files' |
| Stable | Plug 'nvim-mini/mini.files', { 'branch': 'stable' } |
Important: don't forget to call require('mini.files').setup() to enable its functionality.
Note: if you are on Windows, there might be problems with too long file paths (like error: unable to create file <some file name>: Filename too long). Try doing one of the following:
git config --system core.longpaths true. Then try to reinstall.-- No need to copy this inside `setup()`. Will be used automatically.
{
-- Customization of shown content
content = {
-- Predicate for which file system entries to show
filter = nil,
-- Highlight group to use for a file system entry
highlight = nil,
-- Prefix text and highlight to show to the left of file system entry
prefix = nil,
-- Order in which to show file system entries
sort = nil,
},
-- Module mappings created only inside explorer.
-- Use `''` (empty string) to not create one.
mappings = {
close = 'q',
go_in = 'l',
go_in_plus = 'L',
go_out = 'h',
go_out_plus = 'H',
mark_goto = "'",
mark_set = 'm',
reset = '<BS>',
reveal_cwd = '@',
show_help = 'g?',
synchronize = '=',
trim_left = '<',
trim_right = '>',
},
-- General options
options = {
-- Whether to delete permanently or move into module-specific trash
permanent_delete = true,
-- Whether to use for editing directories
use_as_default_explorer = true,
},
-- Customization of explorer windows
windows = {
-- Maximum number of windows to show side by side
max_number = math.huge,
-- Whether to show preview of file/directory under cursor
preview = false,
-- Width of focused window
width_focus = 50,
-- Width of non-focused window
width_nofocus = 15,
-- Width of preview window
width_preview = 25,
},
}