All Projects β†’ is0n β†’ fm-nvim

is0n / fm-nvim

Licence: GPL-3.0 license
πŸ—‚ Neovim plugin that lets you use your favorite terminal file managers (and fuzzy finders) from within Neovim.

Programming Languages

lua
6591 projects

Projects that are alternatives of or similar to fm-nvim

Chadtree
File manager for Neovim. Better than NERDTree.
Stars: ✭ 653 (+472.81%)
Mutual labels:  nvim, file-manager, neovim-plugin
nvim-config
My neovim config
Stars: ✭ 63 (-44.74%)
Mutual labels:  nvim, neovim-plugin, nnn
dotfiles
πŸ”§ My dotfiles on ο£Ώ macOS for Neovim, Zsh, kitty, lf, etc
Stars: ✭ 90 (-21.05%)
Mutual labels:  ranger, vifm, lf
firvish.nvim
WIP
Stars: ✭ 31 (-72.81%)
Mutual labels:  nvim, neovim-plugin
dotfiles
πŸ€ Vim/Neovim + Tmux + Zsh + Alacritty = Build your own fantastic development environment
Stars: ✭ 65 (-42.98%)
Mutual labels:  nvim, ranger
cargo-limit
Cargo with less noise: warnings are skipped until errors are fixed, Neovim integration, etc.
Stars: ✭ 105 (-7.89%)
Mutual labels:  nvim, neovim-plugin
dotfiles
i3, Vim, Bash, Ruby, Typescript & React, Elixir, Golang & more!
Stars: ✭ 22 (-80.7%)
Mutual labels:  fzf, nvim
feline.nvim
A minimal, stylish and customizable statusline for Neovim written in Lua
Stars: ✭ 867 (+660.53%)
Mutual labels:  nvim, neovim-plugin
configuration
Config files
Stars: ✭ 12 (-89.47%)
Mutual labels:  ranger, vifm
comment-box.nvim
✨ Clarify and beautify your comments using boxes and lines.
Stars: ✭ 91 (-20.18%)
Mutual labels:  nvim, neovim-plugin
nvim-startup.lua
Displays neovim startup time
Stars: ✭ 53 (-53.51%)
Mutual labels:  nvim, neovim-plugin
awesome-neovim
Awesome Configurations for C/C++,Zig,Web and Lua development in NeoVim
Stars: ✭ 54 (-52.63%)
Mutual labels:  nvim, neovim-plugin
neovim-lua-plugin-boilerplate
Starter template for creating Neovim Lua plugins
Stars: ✭ 28 (-75.44%)
Mutual labels:  nvim, neovim-plugin
tabby.nvim
A declarative, highly configurable, and neovim style tabline plugin. Use your nvim tabs as a workspace multiplexer!
Stars: ✭ 232 (+103.51%)
Mutual labels:  nvim, neovim-plugin
code runner.nvim
Neovim plugin.The best code runner you could have, it is like the one in vscode but with super powers, it manages projects like in intellij but without being slow
Stars: ✭ 234 (+105.26%)
Mutual labels:  nvim, neovim-plugin
nvim-highlite
A colorscheme template that is "lite" on logic for the developer.
Stars: ✭ 163 (+42.98%)
Mutual labels:  nvim, neovim-plugin
bolt.nvim
⚑ Ultrafast multi-pane file manager for Neovim with fuzzy matching
Stars: ✭ 100 (-12.28%)
Mutual labels:  nvim, neovim-plugin
cutlass.nvim
Plugin that adds a 'cut' operation separate from 'delete'
Stars: ✭ 78 (-31.58%)
Mutual labels:  nvim, neovim-plugin
nvim-todoist.lua
Todoist plugin for Neovim in pure Lua, inspired by https://github.com/romgrk/todoist.nvim, which you should use instead
Stars: ✭ 22 (-80.7%)
Mutual labels:  nvim, neovim-plugin
aerial.nvim
Neovim plugin for a code outline window
Stars: ✭ 485 (+325.44%)
Mutual labels:  nvim, neovim-plugin

GitHub Stars PRs Welcome Last Commit GitHub Open Issues GitHub Closed Issues GitHub License Lua

fm-nvim

fm-nvim is a Neovim plugin that lets you use your favorite terminal file managers (and fuzzy finders) from within Neovim.

Supported File Managers

Supported Fuzzy Finders

Extra

Keep in mind that support for fuzzy finding is quite limited and using seperate plugins would be more practical.

1. Partial Support as files cannot be opened.

Demo and Screenshots:

Demo

Screenshots
Fzf

Fzf

Fzy

Fzy

Skim

Skim

Fm

Fm

Lf

Lf

Twf

Twf

Fff

Fff

Nnn

Nnn

Vifm

Vifm

Xplr

Xplr

Broot

Broot

Ranger

Ranger

Joshuto

Joshuto

Installation:

Configuration:

The following configuration contains the defaults so if you find them satisfactory, there is no need to use the setup function.

require('fm-nvim').setup{
	-- (Vim) Command used to open files
	edit_cmd = "edit",

	-- See `Q&A` for more info
	on_close = {},
	on_open = {},

	-- UI Options
	ui = {
		-- Default UI (can be "split" or "float")
		default = "float",

		float = {
			-- Floating window border (see ':h nvim_open_win')
			border    = "none",

			-- Highlight group for floating window/border (see ':h winhl')
			float_hl  = "Normal",
			border_hl = "FloatBorder",

			-- Floating Window Transparency (see ':h winblend')
			blend     = 0,

			-- Num from 0 - 1 for measurements
			height    = 0.8,
			width     = 0.8,

			-- X and Y Axis of Window
			x         = 0.5,
			y         = 0.5
		},

		split = {
			-- Direction of split
			direction = "topleft",

			-- Size of split
			size      = 24
		}
	},

	-- Terminal commands used w/ file manager (have to be in your $PATH)
	cmds = {
		lf_cmd      = "lf", -- eg: lf_cmd = "lf -command 'set hidden'"
		fm_cmd      = "fm",
		nnn_cmd     = "nnn",
		fff_cmd     = "fff",
		twf_cmd     = "twf",
		fzf_cmd     = "fzf", -- eg: fzf_cmd = "fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'"
		fzy_cmd     = "find . | fzy",
		xplr_cmd    = "xplr",
		vifm_cmd    = "vifm",
		skim_cmd    = "sk",
		broot_cmd   = "broot",
		gitui_cmd   = "gitui",
		ranger_cmd  = "ranger",
		joshuto_cmd = "joshuto",
		lazygit_cmd = "lazygit",
		neomutt_cmd = "neomutt"
	},

	-- Mappings used with the plugin
	mappings = {
		vert_split = "<C-v>",
		horz_split = "<C-h>",
		tabedit    = "<C-t>",
		edit       = "<C-e>",
		ESC        = "<ESC>"
	},

	-- Path to broot config
	broot_conf = vim.fn.stdpath("data") .. "/site/pack/packer/start/fm-nvim/assets/broot_conf.hjson"
}

Usage:

Any of the following commands are fine...

  • Commands
    • :Neomutt
    • :Lazygit
    • :Joshuto
    • :Ranger
    • :Broot
    • :Gitui
    • :Xplr
    • :Vifm
    • :Skim
    • :Nnn
    • :Fff
    • :Twf
    • :Fzf
    • :Fzy
    • :Lf
    • :Fm

but you can add a directory path w/ the command (doesn't work with skim, fzy, or fzf).

Example:

:Lf ~/.config/nvim/

Q&A

Q: What if I want to open files in splits or tabs?

A: Use any of the default mappings (unless you've changed them)...

  • <C-h> for horizontal split
  • <C-v> for vertical split
  • <C-e> for normal edit
  • <C-t> for tabs

Q: Can I run a function once exiting or entering the plugin?

A: Yes you can! Use the following code as a guide...

local function yourFunction()
	-- Your code goes here
end

require('fm-nvim').setup{
	-- Runs yourFunction() upon exiting the floating window (can only be a function)
	on_close = { yourFunction },

	-- Runs yourFunction() upon opening the floating window (can only be a function)
	on_open = { yourFunction }
}

Q: What if I want to map <ESC> to close the window?

A: You can do this by mapping <ESC> to whatever closes your file manager (note that this may bring up other issues). This can be done with the following code...

require('fm-nvim').setup{
	mappings = {
		-- Example for Vifm
		ESC        = ":q<CR>"
	}
}

or you could map <ESC> to quit in your file manager...

Example for Lf:

map <esc> :quit

Q: Am I able to have image previews?

A: Yes and no. Assuming you are on Linux, it is possible with the help of tools like Überzug. If you are on Mac or Windows, it is not possible.

Q: Can I use splits instead of a floating window

A: It's possible by changing the "default" option in the "ui" table to "split"

Q: Why isn't my Broot configuration working?

A: In order to support Broot, a custom configuration file is used, however, you can change this by modifying the broot_conf option to your configuration. Just be sure to include the following in your config file...

{
	verbs: [
		{
			key: enter
			execution: ":print_path"
			apply_to: file
		}
	]
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].