The stable branch updates only on releases and provides the most reliable experience.
Using Lazy.nvim:
{
"A7Lavinraj/fyler.nvim",
dependencies = { "nvim-mini/mini.icons" },
branch = "stable",
opts = {}
}
Using Mini.deps:
add({
source = "A7Lavinraj/fyler.nvim",
depends = { "nvim-mini/mini.icons" },
checkout = "stable",
})
The main branch includes the newest features but may contain bugs.
Using Lazy.nvim with mini.icons:
{
"A7Lavinraj/fyler.nvim",
dependencies = { "nvim-mini/mini.icons" },
opts = {}
}
Using Lazy.nvim with nvim-web-devicons:
{
"A7Lavinraj/fyler.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
opts = { icon_provider = "nvim_web_devicons" }
}
:Fyler " Open with default options
:Fyler kind=split_left " Open in specific window layout
:Fyler dir=~/projects " Open specific directory
local fyler = require("fyler")
-- Open Fyler with optional settings
fyler.open({
dir = "~/", -- (Optional) Start in specific directory
kind = "split_left_most" -- (Optional) Use custom window layout
})
-- Toggle Fyler with optional settings
fyler.toggle({
dir = "~/", -- (Optional) Start in specific directory
kind = "split_left_most" -- (Optional) Use custom window layout
})
Fyler.nvim works out of the box with sensible defaults. Here's the complete configuration reference:
require("fyler").setup({
-- Close explorer when file is selected
close_on_select = true,
-- Auto-confirm simple file operations
confirm_simple = false,
-- Replace netrw as default explorer
default_explorer = false,
-- Move deleted files/directories to the system trash
delete_to_trash = false,
-- Git integration
git_status = {
enabled = true,
symbols = {
Untracked = "?",
Added = "+",
Modified = "*",
Deleted = "x",
Renamed = ">",
Copied = "~",
Conflict = "!",
Ignored = "#",
},
},
hooks = {
-- function(path) end
on_delete = nil,
-- function(src_path, dst_path) end
on_rename = nil,
-- function(hl_groups, palette) end
on_highlight = nil,
},
-- Directory icons
icon = {
directory_collapsed = nil,
directory_empty = nil,
directory_expanded = nil,
},
-- Icon provider (none, mini_icons or nvim_web_devicons)
icon_provider = "mini_icons",
-- Indentation guides
indentscope = {
enabled = true,
group = "FylerIndentMarker",
marker = "│",
},
-- Key mappings
mappings = {
["q"] = "CloseView",
["<CR>"] = "Select",
["<C-t>"] = "SelectTab",
["|"] = "SelectVSplit",
["-"] = "SelectSplit",
["^"] = "GotoParent",
["="] = "GotoCwd",
["."] = "GotoNode",
["#"] = "CollapseAll",
["<BS>"] = "CollapseNode",
},
popups = {
permission = {
-- Respective popup configuration:
-- border
-- height
-- width
-- left
-- right
-- top
-- bottom
},
},
-- Buffer tracking
track_current_buffer = true,
-- Window configuration
win = {
-- Window border style
border = "single",
-- Default window kind
kind = "replace",
-- Window kind presets
kind_presets = {
-- Define custom layouts
-- Values: "(0,1]rel" for relative or "{1...}abs" for absolute
},
-- Buffer and window options
buf_opts = {}, -- Custom buffer options
win_opts = {}, -- Custom window options
},
})
Enable delete_to_trash to send deletions to your operating system's trash (macOS ~/.Trash, Linux XDG Trash, Windows Recycle Bin) instead of removing files permanently.
Fyler automatically performs a permanent delete if the target already lives inside the trash directory.
Note: When moving files across different filesystems (e.g., to a trash directory on a different drive), the operation automatically falls back to copy-then-delete, which may be slower for large files or directories. Windows operations include a 30-second timeout to prevent hanging.
Fyler.nvim includes a Telescope extension for enhanced directory navigation:
local telescope = require("telescope")
telescope.setup({
extensions = {
fyler_zoxide = {
-- Extension configuration
}
}
})
telescope.load_extension("fyler_zoxide")
We welcome contributions! Please read our Contributing Guidelines before submitting pull requests.
If you encounter any problems:
If fyler.nvim doesn't meet your needs, consider these alternatives:
This project draws inspiration from several excellent Neovim plugins and libraries:
This project is licensed under the Apache-2.0 License. See the repository for full license details.