Download these files into ~/.config/nvim/
Opening neovim you'll see the traditional screen + you can see the which-key plugin is available:
Tip
The <leader> key is \.
A single <leader> is for "searching".
A double <leader> is for other types of actions.
See the which-key output for each to understand what's available.
LSP support for Go and Rust + custom lualine implementation + breadcrumb trail in the winbar:
A mini-map can be activated via key mapping:
A traditional file structure navigation is available + LSP diagnostics shown:
An AST navigation view for the symbols in the file is available:
Telescope is used heavily for searching for all sorts of data:
The quickfix workflow is also improved via a plugin:
.
├── after
│ ├── ftplugin
│ │ └── *.vim
│ └── syntax
│ └── *vim
├── ftdetect
│ └── *.vim
├── init.lua
├── lua
│ ├── autocommands.lua
│ ├── commands.lua
│ ├── custom
│ │ └── example
│ │ └── *.lua
│ ├── highlights.lua
│ ├── mappings.lua
│ ├── plugins
│ │ ├── *.lua
│ ├── quickfix.lua
│ └── settings.lua
├── spell
│ ├── en.utf-8.add
│ └── en.utf-8.add.spl
└── syntax
└── qf.vim
Determines the filetype of a buffer when it's first opened.
- Global:
$VIMRUNTIME/ftdetect/<filetype>.vimor*.lua. - User-defined:
~/.config/nvim/ftdetect/<filetype>.vimor*.lua
Note
ftdetect doesn’t have an after/ equivalent because once the filetype is
set, it doesn't need to be adjusted again.
Configures buffer-local settings after the filetype is detected and set by ftdetect.
- Global:
$VIMRUNTIME/ftplugin/<filetype>.vimor*.lua. - User-defined:
~/.config/nvim/ftplugin/<filetype>.vimor*.lua. - After defined:
~/.config/nvim/after/ftplugin/<filetype>.vimor*.lua.
Note
Files in /after/ftplugin/ are sourced after the regular ftplugin files.
This allows overriding or extending previous filetype configurations without
directly modifying them.
The spell/ directory stores custom spelling dictionaries for different
languages or locales. It allows you to add custom words to the spellchecker
without modifying Neovim’s default spell files.
en.utf-8.add: This is the plain-text list of additional words you’ve added to the spellchecker.en.utf-8.add.spl: This is the compiled spell file generated from the.addfile, which helps speeds up spellchecking.
Tip
Hover over a misspelled word and press zg to add it to the custom
dictionary. The word gets saved to ~/.config/nvim/spell/en.utf-8.add.
Alternatively, type z= to see suggestions.
Tip
An optional (but recommended) step is to compile the spell file:
mkspell ~/.config/nvim/spell/en.utf-8.add
The syntax/*.vim or *.lua files define syntax highlighting rules for
different filetypes.
- Global:
$VIMRUNTIME/syntax/<filetype>.vimor*.lua. - User-defined:
~/.config/nvim/syntax/<filetype>.vimor*.lua. - After defined:
~/.config/nvim/after/syntax/<filetype>.vimor*.lua.
When you install plugins with lazy.nvim (or packer, vim-plug, etc.), those
plugins typically place their configuration files in:
~/.local/share/nvim/lazy/<plugin-name>/
These plugin files live in the global runtime path ($VIMRUNTIME) and are
sourced automatically by Neovim.
Files in /after/ are sourced after plugin files, allowing you to:
- Override plugin settings (like buffer options, keymaps).
- Add extra configurations that build on top of the plugin’s defaults.
- Fix incompatibilities between plugins or conflicts in configuration.
As an example, when configuring an LSP server, you would have your setup code in:
~/.config/nvim/lua/plugins/lsp.lua
While adding any LSP specific modifications into:
~/.config/nvim/after/plugin/lsp.lua
So .setup() calls configure plugins globally, whereas ftplugin is
filetype-specific. If you place .setup() in ftplugin/, it will only run when
a file of that type is opened, which can lead to incomplete or missing
configurations.






