Skip to main content

🔌 Plugins

FtVim comes with a carefully curated set of plugins. All plugins are managed by lazy.nvim.

Core​

PluginDescription
lazy.nvimModern plugin manager
plenary.nvimLua utility library
nvim-treesitterSyntax highlighting and code understanding

UI​

PluginDescription
catppuccinDefault colorscheme (Tokyo Night and Kanagawa are also bundled)
snacks.nvimDashboard, notifications, input dialogs, indent guides and scope
bufferline.nvimBuffer tabs
lualine.nvimStatusline
nvim-web-deviconsFile icons
vim-illuminateHighlight word under cursor

Editor​

PluginDescription
neo-tree.nvimFile explorer
snacks.nvimFuzzy finder (files, grep, buffers, etc.) and terminal
which-key.nvimKeybinding hints
mini.aiBetter text objects
nvim-treesitter-textobjectsFunction/class/block text objects for mini.ai
mini.bufremoveBetter buffer deletion

Coding​

PluginDescription
blink.cmpAuto-completion
friendly-snippetsSnippet collection
nvim-lspconfigLSP configuration
mason.nvimLSP/DAP/Linter installer
mason-lspconfig.nvimMason + lspconfig integration
conform.nvimCode formatting
nvim-lintLinting (used by the extras for norminette, flake8, mypy, hadolint)
nvim-autopairsAuto-close brackets and quotes
lazydev.nvimNeovim Lua API completion for your config

Commenting (gc, gcc) is built into Neovim, so no plugin is needed.

Git​

PluginDescription
gitsigns.nvimGit signs, blame, and hunks

Extras​

Each extra adds its own plugins, for example nvim-dap for debugging or 42header for the 42 extra.

Default Language Servers​

FtVim configures these LSP servers by default:

LanguageServer
C/C++clangd
Pythonpyright
Lualua_ls

The extras add more (TypeScript, Docker, YAML...). Other servers can be installed via :Mason.

Default Formatters​

LanguageFormatter
Luastylua
Shellshfmt

The extras add more: c_formatter_42 for C (42), clang-format for C++ (C++) and prettier for web files (Web).

Default Treesitter Parsers​

The following parsers are installed by default:

  • bash
  • c, cpp
  • diff, gitcommit
  • json
  • lua
  • make
  • markdown, markdown_inline
  • python
  • query
  • vim, vimdoc

The extras add the parsers they need. Install others with :TSInstall <language>.

Lazy Loading​

Most plugins are lazy-loaded for fast startup:

  • Event-based: Load on specific events (e.g., BufReadPost, InsertEnter)
  • Command-based: Load when a command is run (e.g., :Neotree)
  • Keymap-based: Load when a keymap is pressed (e.g., <leader>ff)

This keeps startup time fast while ensuring plugins are available when needed.

Plugin Updates​

To update all plugins:

:Lazy update

To check for updates without installing:

:Lazy check

To view plugin status:

:Lazy