fzfx.nvim
A Neovim fuzzy finder that updates on every keystroke.
https://github.com/linrongbin16/fzfx.nvim/assets/6496887/b5e2b0dc-4dd6-4c18-b1da-f54419efbba3
Search require("fzfx
with rg's -g *spec.lua -F
option.
š Table of contents
āØ Features
- Colors/icons, Windows and modern Neovim features support.
- Updates on every keystroke of user query and selection.
- Multiple variants to avoid manual input:
- Search by visual select.
- Search by cursor word.
- Search by yank text.
- Search by resume last search.
- Multiple data sources to avoid restart search flow:
- Exclude or include hiddens/ignores when searching files.
- Local or remote when searching git branches.
- Whole workspace or current buffer only when searching diagnostics.
- ...
- And a lot more.
Please see Demo for more use cases.
ā
Requirements
[!NOTE]
This plugin keeps up with the latest Neovim stable version, supports until the last legacy version, while earlier versions are dropped to reduce maintenance effort.
For example, at the time of writing (2024-06-11), stable is 0.10, last legacy is 0.9, nightly is 0.11, thus this plugin supports 0.9+.
- Neovim ≥ 0.9.
- fzf.
- curl (for query fzf status or update preview label).
- nerd-fonts (optional for icons).
- rg (optional for live grep, by default use grep).
- fd (optional for find files, by default use find).
- bat (optional for preview files, by default use cat).
- git (mandatory for all git commands).
- delta (optional for preview git diff, show, blame).
- lsd/eza (optional for file explorer, by default use ls).
Windows
Besides those rust-written commands mentioned above (rg
/fd
/bat
), Windows users will have to install the linux shell environment and core utils, since basic shell commands such as echo
, mkdir
are internally required.
Click here to see how to install linux commands
There're many ways to install portable linux shell and core utils on Windows, personally I would recommend below two methods:
#### [Git for Windows](https://git-scm.com/download/win)
Install with the below 3 options:
- In **Select Components**, select **Associate .sh files to be run with Bash**.
- In **Adjusting your PATH environment**, select **Use Git and optional Unix tools from the Command Prompt**.
- In **Configuring the terminal emulator to use with Git Bash**, select **Use Windows's default console window**.
After this step, **git.exe** and builtin linux commands(such as **echo.exe**, **ls.exe**, **curl.exe**) will be available in `%PATH%`.
#### [scoop](https://scoop.sh/)
Run below powershell commands:
```powershell
# scoop
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
scoop bucket add extras
scoop install git # git, bash, sh
scoop install mingw # echo, grep, find, curl, ls, cat
scoop install coreutils # echo, grep, find, curl, ls, cat
```
#### Fix conflicts between embedded commands from `C:\Windows\System32` and linux commands
Windows actually already provide some builtin commands (`find.exe`, `bash.exe`) in `C:\Windows\System32` (or `%SystemRoot%\system32`), but they are not the linux commands they are named after, while could override above installations. To fix it, we need to prioritize (move up) the git or scoop environment variables in `%PATH%`.
š¦ Install
[!NOTE]
You can specify the plugin version/tag (i.e. v5.*
) to avoid break changes between major versions!
With lazy.nvim
```lua
require("lazy").setup({
-- optional for icons
{ "nvim-tree/nvim-web-devicons" },
-- optional for the 'fzf' command
{
"junegunn/fzf",
build = function()
vim.fn["fzf#install"]()
end,
},
{
"linrongbin16/fzfx.nvim",
dependencies = { "nvim-tree/nvim-web-devicons", 'junegunn/fzf' },
-- specify version to avoid break changes
-- version = 'v5.*',
config = function()
require("fzfx").setup()
end,
},
})
```
With packer.nvim
```lua
return require("packer").startup(function(use)
-- optional for icons
use({ "nvim-tree/nvim-web-devicons" })
-- optional for the 'fzf' command
use({
"junegunn/fzf",
run = function()
vim.fn["fzf#install"]()
end,
})
use({
"linrongbin16/fzfx.nvim",
-- specify version to avoid break changes
-- version = 'v5.0.0',
config = function()
require("fzfx").setup()
end,
})
end)
```
With vim-plug
```vim
call plug#begin()
" optional for icons
Plug 'nvim-tree/nvim-web-devicons'
" optional for the 'fzf' command
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
" specify version to avoid break changes
Plug 'linrongbin16/fzfx.nvim' ", { 'tag': 'v5.0.0' }
call plug#end()
lua require('fzfx').setup()
```
š Usage
There're multiple commands provided, named with prefix Fzfx
. The sub commands indicates the user query's input method, (i.e. the variants) named with below conventions:
- Basic variant is named with
args
, accepts the following arguments as query content.
- Visual select variant is named with
visual
, uses visual selection as query content.
- Cursor word variant is named with
cword
, uses the word text under cursor as query content.
- Put (i.e. yank text) variant is named with
put
(just like press the p
key), uses the yank text as query content.
- Resume last search variant is named with
resume
, uses the last search content as query content.
[!NOTE]
The args
sub command can be omitted, for example :FzfxFiles<CR>
is equivalent to :FzfxFiles args<CR>
.
To specify query text, for example asdf
, you will have to type :FzfxFiles args asdf<CR>
.
Below keys are binded by default:
- Exit keys (fzf
--expect
option)
esc
: quit.
double-click
/enter
: open/jump to file (behave different on some specific commands).
- Preview keys
alt-p
: toggle preview.
ctrl-f
: preview half page down.
ctrl-b
: preview half page up.
- Select keys
ctrl-e
: toggle select.
ctrl-a
: toggle select all.
Files & Buffers
Name |
Details |
FzfxFiles
|
Find files.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Unrestricted variant is named with
unres_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(unres_)args |
N |
Yes |
Yes |
(unres_)visual |
V |
(unres_)cword |
N |
(unres_)put |
N |
(unres_)resume |
N |
|
FzfxBuffers
|
Find buffers.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
visual |
V |
cword |
N |
put |
N |
resume |
N |
|
FzfxGFiles
|
Find git files.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Current directory (only) variant is named with
cwd_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(cwd_)args |
N |
Yes |
Yes |
(cwd_)visual |
V |
(cwd_)cword |
N |
(cwd_)put |
N |
(cwd_)resume |
N |
|
Grep
Name |
Details |
FzfxLiveGrep |
Live grep.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Use
-- flag to pass raw options to search command
(rg /grep ).
-
Unrestricted variant is named with
unres_ suffix.
-
Current buffer (only) variant is named with
buf_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(unres_/buf_)args |
N |
Yes |
Yes |
(unres_/buf_)visual |
V |
(unres_/buf_)cword |
N |
(unres_/buf_)put |
N |
(unres_/buf_)resume |
N |
|
FzfxBufLiveGrep |
Live grep only on current buffer.
-
This command has the same functionality with
FzfxLiveGrep currently buffer variant
(buf_ ), while the file name is removed for better
user view.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Use
-- flag to pass raw options to search command
(rg /grep ).
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
visual |
V |
cword |
N |
put |
N |
resume |
N |
|
FzfxGLiveGrep |
Live grep with git grep.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Use
-- flag to pass raw options to search command
(git grep ).
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
visual |
V |
cword |
N |
put |
N |
resume |
N |
|
Git
Name |
Details |
FzfxGStatus |
Search git status (changed files).
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Current directory (only) variant is named with
cwd_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(cwd_)args |
N |
Yes |
Yes |
(cwd_)visual |
V |
(cwd_)cword |
N |
(cwd_)put |
N |
(cwd_)resume |
N |
|
FzfxGBranches |
Search git branches.
- Use
enter to checkout branch.
-
Remote branch variant is named with
remote_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(remote_)args |
N |
No |
Yes |
(remote_)visual |
V |
(remote_)cword |
N |
(remote_)put |
N |
(remote_)resume |
N |
|
FzfxGCommits |
Search git commits.
- Use
enter to copy git commit SHA.
-
Current buffer variant is named with
buf_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(buf_)args |
N |
No |
Yes |
(buf_)visual |
V |
(buf_)cword |
N |
(buf_)put |
N |
(buf_)resume |
N |
|
FzfxGBlame |
Search git blame.
- Use
enter to copy git commit SHA.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
No |
Yes |
visual |
V |
cword |
N |
put |
N |
resume |
N |
|
Lsp & Diagnostics
Name |
Details |
FzfxLspDefinitions |
Search definitions.
-
The
args variant always use cursor word as query
content (not command arguments), because the scenario is
navigating symbols, i.e. go to definitions.
-
Use protocol
textDocument/definition.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
|
FzfxLspTypeDefinitions |
Search type definitions.
-
The
args variant always use cursor word as query
content (not command arguments), because the scenario is
navigating symbols, i.e. go to type definitions.
-
Use protocol
textDocument/typeDefinition.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
|
FzfxLspImplementations |
Search implementations.
-
The
args variant always use cursor word as query
content (not command arguments), because the scenario is
navigating symbols, i.e. go to implementations.
-
Use protocol
textDocument/implementation.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
|
FzfxLspReferences |
Search references.
-
The
args variant always use cursor word as query
content (not command arguments), because the scenario is
navigating symbols, i.e. go to references.
-
Use protocol
textDocument/references.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
|
FzfxLspIncomingCalls |
Search incoming calls.
-
The
args variant always use cursor word as query
content (not command arguments), because the scenario is
navigating symbols, i.e. go to incoming calls.
-
Use protocol
callHierarchy/incomingCalls.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
|
FzfxLspOutgoingCalls |
Search outgoing calls.
-
The
args variant always use cursor word as query
content (not command arguments), because the scenario is
navigating symbols, i.e. go to outgoing calls.
-
Use protocol
callHierarchy/outgoingCalls.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
Yes |
Yes |
|
FzfxLspDiagnostics |
Search diagnostics.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
-
Current buffer (only) variant is named with
buf_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(buf_)args |
N |
Yes |
Yes |
(buf_)visual |
V |
(buf_)cword |
N |
(buf_)put |
N |
(buf_)resume |
N |
|
Vim
Name |
Details |
FzfxCommands |
Search vim commands.
- Use
enter to input command.
-
Ex (builtin) commands variant is named with
ex_ suffix.
-
User commands variant is named with
user_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(ex_/user_)args |
N |
No |
Yes |
(ex_/user_)visual |
V |
(ex_/user_)cword |
N |
(ex_/user_)put |
N |
(ex_/user_)resume |
N |
|
FzfxKeyMaps |
Search vim key mappings.
- Use
enter to execute key mapping.
-
Normal mode variant is named with
n_mode_ suffix.
-
Insert mode variant is named with
i_mode_ suffix.
-
Visual/select mode variant is named with
v_mode_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(n_mode_/i_mode_/v_mode_)args |
N |
No |
Yes |
(n_mode_/i_mode_/v_mode_)visual |
V |
(n_mode_/i_mode_/v_mode_)cword |
N |
(n_mode_/i_mode_/v_mode_)put |
N |
(n_mode_/i_mode_/v_mode_)resume |
N |
|
FzfxMarks |
Search vim marks.
-
Use
ctrl-q to send selected lines to quickfix
window and quit.
Variant |
Mode |
Select Keys |
Preview Keys |
args |
N |
No |
Yes |
visual |
V |
cword |
N |
put |
N |
resume |
N |
|
Misc
Name |
Details |
FzfxFileExplorer |
Navigate around file explorer.
-
Include hidden variant is named with
hidden_ suffix.
Variant |
Mode |
Select Keys |
Preview Keys |
(hidden_)args |
N |
Yes |
Yes |
(hidden_)visual |
V |
(hidden_)cword |
N |
(hidden_)put |
N |
(hidden_)resume |
N |
|
š Recommended Key Mappings
Click here to see vim scripts
```vim
" ======== files ========
" by args
nnoremap f :\FzfxFiles
" by visual select
xnoremap f :\FzfxFiles visual
" by cursor word
nnoremap wf :\FzfxFiles cword
" by yank text
nnoremap pf :\FzfxFiles put
" by resume
nnoremap rf :\FzfxFiles resume
" ======== live grep ========
" by args
nnoremap l :\FzfxLiveGrep
" by visual select
xnoremap l :\FzfxLiveGrep visual
" by cursor word
nnoremap wl :\FzfxLiveGrep cword
" by yank text
nnoremap pl :\FzfxLiveGrep put
" by resume
nnoremap rl :\FzfxLiveGrep resume
" ======== buffers ========
" by args
nnoremap bf :\FzfxBuffers
" ======== git files ========
" by args
nnoremap gf :\FzfxGFiles
" ======== git live grep ========
" by args
nnoremap gl :\FzfxGLiveGrep
" by visual select
xnoremap gl :\FzfxGLiveGrep visual
" by cursor word
nnoremap wgl :\FzfxGLiveGrep cword
" by yank text
nnoremap pgl :\FzfxGLiveGrep put
" by resume
nnoremap rgl :\FzfxGLiveGrep resume
" ======== git changed files (status) ========
" by args
nnoremap gs :\FzfxGStatus
" ======== git branches ========
" by args
nnoremap br :\FzfxGBranches
" ======== git commits ========
" by args
nnoremap gc :\FzfxGCommits
" ======== git blame ========
" by args
nnoremap gb :\FzfxGBlame
" ======== lsp diagnostics ========
" by args
nnoremap dg :\FzfxLspDiagnostics
" ======== lsp locations ========
" lsp definitions
nnoremap gd :\FzfxLspDefinitions
" lsp type definitions
nnoremap gt :\FzfxLspTypeDefinitions
" lsp references
nnoremap gr :\FzfxLspReferences
" lsp implementations
nnoremap gi :\FzfxLspImplementations
" lsp incoming calls
nnoremap gI :\FzfxLspIncomingCalls
" lsp outgoing calls
nnoremap gO :\FzfxLspOutgoingCalls
" ======== vim commands ========
" by args
nnoremap cm :\FzfxCommands
" ======== vim key maps ========
" by args
nnoremap km :\FzfxKeyMaps
" ======== vim marks ========
" by args
nnoremap mk :\FzfxMarks
" ======== file explorer ========
" by args
nnoremap xp :\FzfxFileExplorer
```
Click here to see lua scripts
```lua
-- ======== files ========
-- by args
vim.keymap.set(
"n",
"f",
"FzfxFiles",
{ silent = true, noremap = true, desc = "Find files" }
)
-- by visual select
vim.keymap.set(
"x",
"f",
"FzfxFiles visual",
{ silent = true, noremap = true, desc = "Find files" }
)
-- by cursor word
vim.keymap.set(
"n",
"wf",
"FzfxFiles cword",
{ silent = true, noremap = true, desc = "Find files by cursor word" }
)
-- by yank text
vim.keymap.set(
"n",
"pf",
"FzfxFiles put",
{ silent = true, noremap = true, desc = "Find files by yank text" }
)
-- by resume
vim.keymap.set(
"n",
"rf",
"FzfxFiles resume",
{ silent = true, noremap = true, desc = "Find files by resume last" }
)
-- ======== live grep ========
-- live grep
vim.keymap.set(
"n",
"l",
"FzfxLiveGrep",
{ silent = true, noremap = true, desc = "Live grep" }
)
-- by visual select
vim.keymap.set(
"x",
"l",
"FzfxLiveGrep visual",
{ silent = true, noremap = true, desc = "Live grep" }
)
-- by cursor word
vim.keymap.set(
"n",
"wl",
"FzfxLiveGrep cword",
{ silent = true, noremap = true, desc = "Live grep by cursor word" }
)
-- by yank text
vim.keymap.set(
"n",
"pl",
"FzfxLiveGrep put",
{ silent = true, noremap = true, desc = "Live grep by yank text" }
)
-- by resume
vim.keymap.set(
"n",
"rl",
"FzfxLiveGrep resume",
{ silent = true, noremap = true, desc = "Live grep by resume last" }
)
-- ======== buffers ========
-- by args
vim.keymap.set(
"n",
"bf",
"FzfxBuffers",
{ silent = true, noremap = true, desc = "Find buffers" }
)
-- ======== git files ========
-- by args
vim.keymap.set(
"n",
"gf",
"FzfxGFiles",
{ silent = true, noremap = true, desc = "Find git files" }
)
-- ======== git live grep ========
-- by args
vim.keymap.set(
"n",
"gl",
"FzfxGLiveGrep",
{ silent = true, noremap = true, desc = "Git live grep" }
)
-- by visual select
vim.keymap.set(
"x",
"gl",
"FzfxGLiveGrep visual",
{ silent = true, noremap = true, desc = "Git live grep" }
)
-- by cursor word
vim.keymap.set(
"n",
"wgl",
"FzfxGLiveGrep cword",
{ silent = true, noremap = true, desc = "Git live grep by cursor word" }
)
-- by yank text
vim.keymap.set(
"n",
"pgl",
"FzfxGLiveGrep put",
{ silent = true, noremap = true, desc = "Git live grep by yank text" }
)
-- by resume
vim.keymap.set(
"n",
"rgl",
"FzfxGLiveGrep resume",
{ silent = true, noremap = true, desc = "Git live grep by resume last" }
)
-- ======== git changed files (status) ========
-- by args
vim.keymap.set(
"n",
"gs",
"FzfxGStatus",
{ silent = true, noremap = true, desc = "Find git changed files (status)" }
)
-- ======== git branches ========
-- by args
vim.keymap.set(
"n",
"br",
"FzfxGBranches",
{ silent = true, noremap = true, desc = "Search git branches" }
)
-- ======== git commits ========
-- by args
vim.keymap.set(
"n",
"gc",
"FzfxGCommits",
{ silent = true, noremap = true, desc = "Search git commits" }
)
-- ======== git blame ========
-- by args
vim.keymap.set(
"n",
"gb",
"FzfxGBlame",
{ silent = true, noremap = true, desc = "Search git blame" }
)
-- ======== lsp diagnostics ========
-- by args
vim.keymap.set(
"n",
"dg",
"FzfxLspDiagnostics",
{ silent = true, noremap = true, desc = "Search lsp diagnostics" }
)
-- ======== lsp symbols ========
-- lsp definitions
vim.keymap.set(
"n",
"gd",
"FzfxLspDefinitions",
{ silent = true, noremap = true, desc = "Goto lsp definitions" }
)
-- lsp type definitions
vim.keymap.set(
"n",
"gt",
"FzfxLspTypeDefinitions",
{ silent = true, noremap = true, desc = "Goto lsp type definitions" }
)
-- lsp references
vim.keymap.set(
"n",
"gr",
"FzfxLspReferences",
{ silent = true, noremap = true, desc = "Goto lsp references" }
)
-- lsp implementations
vim.keymap.set(
"n",
"gi",
"FzfxLspImplementations",
{ silent = true, noremap = true, desc = "Goto lsp implementations" }
)
-- lsp incoming calls
vim.keymap.set(
"n",
"gI",
"FzfxLspIncomingCalls",
{ silent = true, noremap = true, desc = "Goto lsp incoming calls" }
)
-- lsp outgoing calls
vim.keymap.set(
"n",
"gO",
"FzfxLspOutgoingCalls",
{ silent = true, noremap = true, desc = "Goto lsp outgoing calls" }
)
-- ======== vim commands ========
-- by args
vim.keymap.set(
"n",
"cm",
"FzfxCommands",
{ silent = true, noremap = true, desc = "Search vim commands" }
)
-- ======== vim key maps ========
-- by args
vim.keymap.set(
"n",
"km",
"FzfxKeyMaps",
{ silent = true, noremap = true, desc = "Search vim keymaps" }
)
-- ======== vim marks ========
-- by args
vim.keymap.set(
"n",
"mk",
"FzfxMarks",
{ silent = true, noremap = true, desc = "Search vim marks" }
)
-- ======== file explorer ========
-- by args
vim.keymap.set(
"n",
"xp",
"FzfxFileExplorer",
{ silent = true, noremap = true, desc = "File explorer" }
)
```
š§ Configuration
To configure options, please use:
require('fzfx').setup(opts)
The opts
is an optional lua table that override the default options.
For complete default options, please see config.lua.
For advanced configurations, please check Advanced Configuration.
Feature Flags
To enable/disable some features, please define below global variables before setup this plugin:
-
vim.g.fzfx_disable_buffer_previewer
: Disable nvim buffer for previewing file contents, use fzf builtin preview window via bat
with best performance. By default this feature is enabled.
Click here to see how to configure
```vim
" vim scripts
let g:fzfx_disable_buffer_previewer = 1 " or v:true
```
```lua
-- lua scripts
vim.g.fzfx_disable_buffer_previewer = 1 -- or true
```
-
vim.g.fzfx_enable_bat_theme_autogen
: Enable bat themes auto generation for fzf's builtin preview window, it generates the TextMate .tmTheme
file (widely used by text editors such as Sublime Text, VS Code and bat
command) for bat
based on current Neovim's colorscheme, thus makes a closer looking to Neovim's buffer. By default this feature is disabled.
Click here to see how to configure
```vim
" vim scripts
let g:fzfx_enable_bat_theme_autogen = 1 " or v:true
```
```lua
-- lua scripts
vim.g.fzfx_enable_bat_theme_autogen = 1 -- or true
```
Create Your Own Command
Here's a minimal example that implement the ls -1
like FzfxLs
command:
https://github.com/linrongbin16/fzfx.nvim/assets/6496887/c704e5b2-d82a-45f2-8920-adeec5d3e7c2
Click here to see how to configure
```lua
require("fzfx").setup()
require("fzfx").register("ls", {
--- @type CommandConfig
command = {
name = "FzfxLs",
desc = "File Explorer (ls -1)",
},
variants = {
{
name = "args",
feed = "args",
default_provider = "filter_hiddens",
},
{
name = "hidden_args",
feed = "args",
default_provider = "include_hiddens",
},
},
--- @type table
providers = {
filter_hiddens = {
key = "ctrl-h",
provider = { "ls", "--color=always", "-1" },
},
include_hiddens = {
key = "ctrl-u",
provider = { "ls", "--color=always", "-1a" },
},
},
--- @type table
previewers = {
filter_hiddens = {
previewer = function(line)
-- each line is either a folder or a file
return vim.fn.isdirectory(line) > 0 and { "ls", "--color=always", "-lha", line }
or { "cat", line }
end,
previewer_type = "command_list",
},
include_hiddens = {
previewer = function(line)
return vim.fn.isdirectory(line) > 0 and { "ls", "--color=always", "-lha", line }
or { "cat", line }
end,
previewer_type = "command_list",
},
},
actions = {
["esc"] = function(lines)
-- do nothing
end,
["enter"] = function(lines)
for _, line in ipairs(lines) do
vim.cmd(string.format([[edit %s]], line))
end
end,
},
fzf_opts = {
"--multi",
{ "--prompt", "Ls > " },
},
})
```
First setup this plugin, then use require("fzfx").register(name, opts})
api to create your own searching command.
For detailed explanation of each components, please see A Generic Schema for Creating FZF Command and schema.lua.
API References
To help easier customizing/integrating, fzfx provides below modules and APIs.
It's highly recommended to use these APIs when you're creating a new searching command, rather than start from scratch, since they are usually robust and take various situations into consideration.
Please see API References for more details.
šŖ² Known Issues
Please see Known Issues if you encountered any issue.
š Alternatives
āļø Development
To develop the project and make PR, please setup with:
To run unit tests, please install below dependencies:
Then test with vusted ./spec
.
š Contribute
Please open issue/PR for anything about fzfx.nvim.
Like fzfx.nvim? Consider