Navigate and manipulate file system. Part of 'mini.nvim' library.
For full experience needs nvim-tree/nvim-web-devicons plugin (but works without it).
See more details in Features and help file.
⦿ 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 the repository page to learn about common design principles and configuration recipes.
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/echasnovski/mini.nvim/assets/24854248/530483a5-fe9a-4e18-9813-a6d609fc89ff
Navigate file system using column view (Miller columns) to display nested directories. See *MiniFiles-navigation*
tag in help file 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 *MiniFiles-manipulation*
tag in help file for overview.
Use as default file explorer instead of netrw
.
Configurable:
See *MiniFiles-examples*
tag in help file 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.
Works on all supported versions but using Neovim>=0.9 is recommended.
This module silently reacts to not enough permissions:
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.g?
for more information about other available mappings.$
, G
, f
/t
, etc.).For bigger overview, see *MiniFiles-navigation*
tag in help file.
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 bigger overview, see *MiniFiles-manipulation*
tag in help file.
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):
Github repo | Branch | Code snippet |
---|---|---|
'mini.nvim' library | Main | Follow recommended 'mini.deps' installation |
Stable | ||
Standalone plugin | Main | add('echasnovski/mini.files') |
Stable | add({ source = 'echasnovski/mini.files', checkout = 'stable' }) |
Github repo | Branch | Code snippet |
---|---|---|
'mini.nvim' library | Main | { 'echasnovski/mini.nvim', version = false }, |
Stable | { 'echasnovski/mini.nvim', version = '*' }, |
|
Standalone plugin | Main | { 'echasnovski/mini.files', version = false }, |
Stable | { 'echasnovski/mini.files', version = '*' }, |
Github repo | Branch | Code snippet |
---|---|---|
'mini.nvim' library | Main | Plug 'echasnovski/mini.nvim' |
Stable | Plug 'echasnovski/mini.nvim', { 'branch': 'stable' } |
|
Standalone plugin | Main | Plug 'echasnovski/mini.files' |
Stable | Plug 'echasnovski/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,
-- What prefix to show to the left of file system entry
prefix = nil,
-- In which order 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',
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,
},
}