A Neovim plugin that integrates the es.exe
command-line tool from Voidtools Everything Search with fzf-lua
and neo-tree.nvim
. This plugin allows you to search and open files or directories across your entire system directly from Neovim.
- Global File and Directory Search: Utilize the powerful
es.exe
CLI to perform fast searches across your entire system. - Fuzzy Finder Integration: Presents search results using
fzf-lua
for intuitive fuzzy finding. - File Explorer Integration: Opens directories using
neo-tree.nvim
, a modern and highly customizable file explorer. - Seamless Workflow: Quickly navigate and access files or directories without leaving the Neovim environment.
- Compatibility: Designed to work smoothly with LazyVim and Noice for enhanced Neovim experiences.
- Neovim 0.7 or higher
- es.exe: Ensure it's installed and added to your system's PATH.
- fzf-lua: A Lua-based fuzzy finder for Neovim.
- neo-tree.nvim: A modern file explorer for Neovim written in Lua.
- plenary.nvim: Utility functions required by many Neovim plugins.
- nui.nvim: UI component library for Neovim.
- nvim-web-devicons (Optional): For file icons in
neo-tree.nvim
.
Add the following to your plugins.lua
or equivalent configuration file:
return {
-- Other plugins
{
'cristy-the-one/es.nvim',
dependencies = {
'ibhagwan/fzf-lua',
'nvim-neo-tree/neo-tree.nvim',
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- Optional, for file icons
'MunifTanjim/nui.nvim',
},
config = function()
require('es').setup()
end,
},
}
Ensure that fzf-lua
and neo-tree.nvim
are installed along with their dependencies as listed above.
You can configure neo-tree.nvim
and fzf-lua
according to your preferences.
Example Neo-tree Configuration:
-- neo-tree setup
require('neo-tree').setup({
filesystem = {
follow_current_file = true, -- Focus on the current file
use_libuv_file_watcher = true, -- Auto-refresh when files change
},
})
Example fzf-lua Configuration (Optional):
-- fzf-lua setup
require('fzf-lua').setup({
-- Customize fzf-lua options here
})
-
Command: Run
:EsSearch
in Neovim to trigger the search prompt. -
Key Mapping (Optional): Set up a custom key binding in your Neovim configuration:
vim.keymap.set("n", "<leader>se", "<cmd>EsSearch<CR>", { noremap = true, silent = true, desc = "Search Everything" })
- Initiate Search: Use the command
:EsSearch
or your custom key mapping. - Enter Query: Input your search term when prompted.
- Browse Results:
fzf-lua
will display matching files and directories. - Select an Item:
- File: Opens the file in the current buffer.
- Directory: Opens the directory in
neo-tree.nvim
for browsing.
- Search Prompt: The plugin uses
vim.ui.input
to prompt for a search query. - Executing Search: Runs
es.exe
with your query to retrieve matching files and directories. - Displaying Results: Uses
fzf-lua
to present search results in a fuzzy finder interface. - Opening Selection:
- Files: Opened directly in the current Neovim buffer.
- Directories: Opened in
neo-tree.nvim
for an enhanced file browsing experience.
- es.exe: The Everything Search CLI tool.
- Installation:
- Download from the official website.
- Add
es.exe
to your system's PATH environment variable.
- Installation:
- fzf-lua: Fuzzy finder for Neovim.
- neo-tree.nvim: File explorer for Neovim.
- plenary.nvim: Utility functions required by
neo-tree.nvim
. - nui.nvim: UI components for Neovim, required by
neo-tree.nvim
. - nvim-web-devicons (Optional): Provides file icons.
- LazyVim: Fully compatible; uses standard Neovim APIs and Lua-based plugins.
- Noice: Interactions via
vim.ui.input
andfzf-lua
are enhanced by Noice automatically.
Customize fzf-lua
within the fzf_exec
function to modify behavior such as keybindings, layout, and preview windows.
Example:
require('fzf-lua').fzf_exec(output, {
prompt = 'Everything Search> ',
actions = {
-- Define custom actions here
},
-- Additional options
winopts = {
height = 0.5,
width = 0.9,
},
})
Adjust neo-tree.nvim
settings to change appearance and functionality.
Example:
require('neo-tree').setup({
default_component_configs = {
indent = {
indent_size = 2,
padding = 1,
},
icon = {
folder_closed = "📁",
folder_open = "📂",
},
},
window = {
position = "left",
width = 30,
},
})
- "No results found" Error: Ensure your search query is correct and that
es.exe
is functioning properly. - es.exe Not Recognized: Confirm that
es.exe
is installed and added to your system's PATH. - Plugin Errors: Check that all dependencies are installed and up-to-date.
Contributions are welcome! Please open an issue or submit a pull request on the GitHub repository.
This project is licensed under the MIT License.