Plugin Ecosystem
GentlemanNvim includes a carefully curated collection of plugins organized by functionality. All plugins are managed by lazy.nvim and lazy-loaded for optimal performance.
Plugin Categories
AI Assistants 5 AI tools for coding
Editor Enhancement File management, navigation
UI Components Statusline, dashboard, themes
Language Support LSP, formatting, linting
Git Integration Blame, browse, diff viewing
Utilities Tmux integration, notes
AI & Code Assistance
OpenCode (Primary)
The main AI assistant integration, currently enabled in the configuration:
return {
"NickvanDyke/opencode.nvim" ,
dependencies = {
{ "folke/snacks.nvim" , opts = { input = {}, picker = {}, terminal = {} } },
},
}
Keymap Mode Action <leader>aan Toggle OpenCode <leader>asn, x OpenCode select <leader>ain, x OpenCode ask <leader>aIn, x Ask with context (@this:) <leader>abn, x Ask about buffer (@file) <leader>apn, x OpenCode prompt
Built-in Prompts:
<leader>ape - Explain code
<leader>apf - Fix issues
<leader>apd - Diagnose problems
<leader>apr - Review code
<leader>apt - Generate tests
<leader>apo - Optimize code
GitHub Copilot
Configured with custom filetype restrictions:
return {
"zbirenbaum/copilot.lua" ,
opts = function ()
require ( "copilot.api" ). filetypes = {
yaml = false ,
markdown = false ,
help = false ,
gitcommit = false ,
-- Disabled in certain file types
}
end ,
}
Copilot is disabled for YAML, Markdown, and Git commit files to prevent unwanted suggestions in documentation and commit messages.
Copilot Chat (Disabled)
Copilot Chat integration with custom system prompt tailored for frontend architecture:
View Custom System Prompt
The configuration includes a detailed Spanish-language system prompt that defines:
Expertise in Angular, React, and TypeScript
Focus on Clean Architecture and Hexagonal Architecture
Professional but approachable tone (Argentine Spanish)
Emphasis on modular design and atomic patterns
system_prompt = "Este GPT es un clon del usuario, un arquitecto líder frontend..."
model = "claude-3.5-sonnet"
answer_header = " The Gentleman "
Avante (Disabled)
Advanced AI assistant with inline editing, file selection, and cursor planning:
provider = "copilot"
providers = {
copilot = {
model = "claude-sonnet-4" ,
},
}
windows = {
position = "left" ,
wrap = true ,
width = 30 ,
}
Avante includes complex resize handling logic to prevent duplicate windows and cursor issues when the terminal is resized.
CodeCompanion (Disabled)
Full-featured AI coding assistant with tool support:
Multiple Adapters : copilot_4o, copilot_41, copilot_gemini_25_pro
Tool Groups :
full_stack_dev - Command runner, editor, file operations
gentleman - Custom frontend-focused toolset
Slash Commands : /git_files for repository context
Diff Views : Vertical/horizontal split options
Editor Enhancements
Oil.nvim - File Management
Edit your filesystem like a buffer:
return {
"stevearc/oil.nvim" ,
lazy = false ,
opts = {
default_file_explorer = true ,
skip_confirm_for_simple_edits = false ,
view_options = {
show_hidden = true ,
natural_order = true ,
},
},
}
Key Bindings:
- - Open Oil in parent directory
<leader>E - Open Oil in floating window
<leader>- - Open Oil in current file’s directory
Oil allows you to edit directories like normal buffers - make changes (rename, delete, move files) and save with :w
Harpoon2
Quick navigation between frequently used files:
{ import = "lazyvim.plugins.extras.editor.harpoon2" }
Mark files and jump between them instantly with numeric keybindings.
Goto Preview
Peek at definitions without leaving your current location:
"rmagatti/goto-preview"
-- Keybindings:
-- gpd - Preview definition
-- gpD - Preview declaration
-- gpi - Preview implementation
-- gpy - Preview type definition
-- gpr - Preview references
-- gP - Close all preview windows
Mini.hipatterns
Highlight color codes with their actual colors, including custom HSL support:
highlighters = {
hsl_color = {
pattern = "hsl%(%d+,? %d+,? %d+%)" ,
group = function ( _ , match )
local h , s , l = match : match ( "hsl%((%d+),? (%d+),? (%d+)%)" )
local hex_color = utils . hslToHex ( h , s , l )
return MiniHipatterns . compute_hex_color_group ( hex_color , "bg" )
end ,
},
}
UI Components
Dashboard (Snacks)
Custom ASCII art dashboard with quick actions:
░░░░░░ ░░░░░░
░░░░░░░░░░ ░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░▒▒▒▒░░▒▒▒▒░░░░░░░░░░
Full gentleman character art displayed on startup.
Dashboard Actions:
f - Find File
n - New File
g - Find Text
r - Recent Files
c - Config
l - Lazy
q - Quit
Lualine
Custom statusline with mode indicators and contextual information:
opts = {
options = {
theme = "gentleman-kanagawa-blur" ,
icons_enabled = true ,
},
sections = {
lualine_a = {
{ "mode" , icon = "" },
},
},
}
Special Extensions:
Oil buffers - Show current directory path
CodeCompanion - Display active adapter and model
Incline.nvim
Floating window showing filename with file type icon:
render = function ( props )
local filename = vim . fn . fnamemodify ( vim . api . nvim_buf_get_name ( props . buf ), ":t" )
if vim . bo [ props . buf ]. modified then
filename = "[+] " .. filename
end
local icon , color = require ( "nvim-web-devicons" ). get_icon_color ( filename )
return { { icon , guifg = color }, { " " }, { filename } }
end
Which-key
Interactive keymap guide with 300ms timeout:
opts = {
preset = "classic" ,
win = { border = "single" },
}
Zen Mode + Twilight
Distraction-free coding with dimmed peripheral code:
{
"folke/zen-mode.nvim" ,
opts = {
plugins = {
gitsigns = true ,
tmux = true ,
twilight = { enabled = true },
},
},
keys = { { "<leader>z" , "<cmd>ZenMode<cr>" } },
}
Obsidian.nvim
Note-taking integration with your Obsidian vault:
workspaces = {
{
name = "GentlemanNotes" ,
path = os.getenv ( "HOME" ) .. "/.config/obsidian" ,
},
}
picker = { name = "snacks.pick" }
Obsidian Keybindings:
<leader>oc - Check checkbox
<leader>ot - Insert template
<leader>oo - Open in Obsidian app
<leader>on - Create new note
<leader>os - Search notes
<leader>oq - Quick switch
Render Markdown
Beautiful markdown rendering in Neovim:
opts = {
heading = {
icons = { "① " , "② " , "③ " , "④ " , "⑤ " , "⑥ " },
style = "full" ,
},
bullet = {
icons = { "●" , "○" , "◆" , "◇" },
},
}
Tmux Navigation
Seamless navigation between Neovim and tmux panes:
vim . keymap . set ( "n" , "<C-h>" , nvim_tmux_nav . NvimTmuxNavigateLeft )
vim . keymap . set ( "n" , "<C-j>" , nvim_tmux_nav . NvimTmuxNavigateDown )
vim . keymap . set ( "n" , "<C-k>" , nvim_tmux_nav . NvimTmuxNavigateUp )
vim . keymap . set ( "n" , "<C-l>" , nvim_tmux_nav . NvimTmuxNavigateRight )
vim . keymap . set ( "n" , "<C- \\ >" , nvim_tmux_nav . NvimTmuxNavigateLastActive )
Same keybindings work in both Neovim and tmux - Ctrl+hjkl for directional navigation.
Git.nvim
Git integration for blame and browse:
keymaps = {
blame = "<Leader>gb" , -- Open blame window
browse = "<Leader>go" , -- Open in GitHub/GitLab
}
Completion Engine
Blink.cmp
Modern completion engine with Avante integration:
return {
"saghen/blink.cmp" ,
dependencies = { "saghen/blink.compat" },
opts = {
sources = {
default = { "avante_commands" , "avante_mentions" , "avante_files" },
providers = {
avante_commands = { score_offset = 90 },
avante_files = { score_offset = 100 },
avante_mentions = { score_offset = 1000 },
},
},
},
}
Integrated with LazyVim extras: lazyvim.plugins.extras.coding.blink
Disabled Plugins
The following plugins are available but disabled:
Check lua/plugins/disabled.lua to enable/disable plugins:
bufferline.nvim - Disabled in favor of default tabline
avante.nvim - Currently disabled
CopilotChat.nvim - Currently disabled
codecompanion.nvim - Currently disabled
precognition.nvim - Motion hints disabled
smear-cursor.nvim - Cursor animation disabled
Plugin Management
Installation
All plugins install automatically on first launch. Manual operations:
Update Plugins
Run :Lazy update to update all plugins to latest versions
Check Health
Run :checkhealth lazy to verify plugin manager health
Clean Unused
Run :Lazy clean to remove plugins no longer in config
View Logs
Run :Lazy log to see installation and update history
Auto-update
checker = { enabled = true } -- Automatically check for updates
Lazy.nvim will notify you when plugin updates are available. Review changes before updating to avoid breaking changes.