Skip to main content

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 = {} } },
  },
}
KeymapModeAction
<leader>aanToggle OpenCode
<leader>asn, xOpenCode select
<leader>ain, xOpenCode ask
<leader>aIn, xAsk with context (@this:)
<leader>abn, xAsk about buffer (@file)
<leader>apn, xOpenCode 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:
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>" } },
}

Specialized Tools

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

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:
1

Update Plugins

Run :Lazy update to update all plugins to latest versions
2

Check Health

Run :checkhealth lazy to verify plugin manager health
3

Clean Unused

Run :Lazy clean to remove plugins no longer in config
4

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.

Build docs developers (and LLMs) love