๐ซ Neovim
January 28, 2026 ยท View on GitHub
A fast and highly customisable Neovim IDE with lazy loading, and modular configurations.
Heavy and bloated
๐ ToC
๐ธ Showcase
| Dashboard | Editor |
|---|---|
| Debugging | AI |
|---|---|
๐ฅ Supports
Plugins
- Highly customisable plugin manager with lazy.nvim
- Package manager with mason.nvim
optional, you can disable this, and install package yourself
- NvChad UI
- Task runner, builtin file runner
- Formatting, linting, debugging, testing
- Querying database, rest api, json, yaml
- AI integration with tab completion, MCP, VectorCode
- Fast find files, image viewer with snacks.nvim
- Others: translate, session, chezmoi, wakatime
Note
And much more...! You will get lost in this config.
Languages
Note
The higher the order, the better configured the language is
- Author using:
javascript,typescript(nodejs, deno)deno: Install from mason or external yourself
gopythonsql(postgresql)- Use vim-dadbod
- With postgresql, use postgrestools
github(github_action)gitlabshelldocker
- Others:
javac,cpphtmlcssreacttailwindc#/csflutter(dart)vimrustkotlinpowershellsqlmssql: Haven't test
luaJust for configuring neovim :((
- Ops:
groovy+jenkinsfilehcl+terraformkuberneteshelmnginxansible
- Configuring languages:
tomlyamlxmlconfig(sshconfig, tmux)kmonadgrafana(alloy)
- Writing:
markdownlatexd2plantuml
Note
See lua/plugins/extras/languages/ for more detail
๐ฅด Usage
Prerequisites
- neovim:
version >= 0.11
make: Some plugins require thiscurldeltaripgrep: telescope, vimgrep replacementfd: telescopenpm,npx: for some plugins and stuff installed via Mason, treesitter generatego: Some stuff installed via Masontreesitter cli: to use treesitter
Note
If you don't use mason, never mind those requirements from Mason
Install
# echo 'please star this repo!'
# sudo rm -rf /
Note
I suggest forking this repo in order to up to date with the upstream (this repo)
Warning
We all know how to do that
You shouldn't enter nvim for now. Use nvim --clean ./lua/plugins/languages/init.lua or another editor to edit the lua/plugins/languages/init.lua!!! Otherwise you will install tons of plugins and requirements from what I'm using.
Structure
lua
โโโ configs Extendable settings for builtin, plugins options
โ โโโ dap nvim-dap config
โ โ โโโ ...
โ โโโ diagnostic (Neo)vim diagnostic setup
โ โโโ lazy lazy.nvim config
โ โโโ mason Mason's config (custom registries)
โ โโโ lsp Neovim's lsp setting
โ โโโ runner Builtin file runner
โ โโโ ui UI (mostly for nvchad)
โ โโโ ...
โโโ core (Neo)vim native settings
โโโ overseer overseer.nvim templates
โ โโโ template
โ โโโ default
โโโ plugins lazy.nvim plugins specs
โ โโโ extras Plugins can be toggle
โ โ โโโ ai AI integration
โ โ โโโ blink blink.cmp extensions
โ โ โโโ chezmoi Chezmoi stuff
โ โ โโโ coding Package manager, lint, format
โ โ โโโ dap Debug
โ โ โโโ database Database
โ โ โโโ git Easier to interact with git
โ โ โโโ languages User's preference to enable
โ โ โ โโโ ...
โ โ โโโ lsp Enhance LSP usage
โ โ โโโ mason Mason package manager
โ โ โโโ motion Extend neovim motions
โ โ โโโ others Others
โ โ โโโ silly When you are stress
โ โ โโโ telescope Telescope extensions
โ โ โโโ test Testing
โ โ โโโ ui Extend UI things
โ โโโ main Shouldn't disable, you don't want to break the config
โโโ types Custom types, overriding types for lua annotating
โโโ utils Utilities
Note
Extra plugins in lua/plugins/extras are (may) safely disabled. You should disable by group in lua/plugins/extras/init.lua, lua/plugins/extras/languages/init.lua, and individually in lua/plugins/extras/others.
๐ Notes
Keymaps
There are some keymaps you should know in this config (and native neovim keymaps)
Note
leaderis Space- Buffer and tab are different in vim
- You should learn how to use vim register
- Neovim's LSP keymaps styles: https://neovim.io/doc/user/lsp.html#lsp-defaults
| Mode | Keymap | Descriptions |
|---|---|---|
n | <leader><leader> | Find Files |
n | <leader>e | Toggle File Tree |
n | <leader>Tab | Open File Tree and Focus Current File |
n | <leader>y | Yank all into System Clipboard |
n | H | Navigate Left Buffer in NvChad Tabufline |
n | L | Navigate Right Buffer in NvChad Tabufline |
n | <leader>c | Close Buffer |
n | <leader><Esc> | No Highlight Search Matches |
n | <C-s> | Save Buffer |
n | ZZ | Write Quit |
n | ZQ | Quit |
i | <C-s> | LSP Show Signature |
n | <C-w><C-d> | LSP Float Diagnostic |
n | K | LSP Hover Documentation |
n | <leader>at | Toggle AI Completion Suggestion |
n | <leader>oH | Uncloak The File laytan/cloak.nvim |
Warning
With completion behavior, see questions below
Should read
- Setting up new LSP in
after/lsp/For better overriding
- Use mason tools to install all packages (Language servers, linters, formatters, runtime)
:MasonToolsInstall - Plugins are updated every week (set in lazy config)
- Some
languagespack require others, you should (or must?) enable yourself:rest:httpjenkins:groovyreact:typescriptansible:yaml(for yaml syntax highlighting)
- Set
$NVIM_NO_IDEto any value to disable lsp, format, lint (quick editing)Ex:
NVIM_NO_IDE=1 lazygit # commit, quick edit - Working with
sql:- With PostgreSQL or PLpgSQL,..., set ft to
pgsqland not using treesitter, but lifepillar/pgsql.vimEx:
-
# vim: set ft=pgsql:
-
- With PostgreSQL or PLpgSQL,..., set ft to
- Working with
latex:- on Arch:
pacman -Sy texlive-latex texlive-latexextra texlive-binextra texlive-langother libxcrypt-compat pacman -S texlive-fontextra # For fonts... - other: idk
- on Arch:
helm_lsincludesyaml_lsalready, no need to runyaml_ls- With
groovy-language-server, ensure you are usingjava@18or so...
For configuring
lazy.nvimonly runconfigandinitonce. Not likeopts- If NvChad UI's color is broken, use
<leader>ur - Don't use NvChad's auto command
- lsp currently not enabled by compound filetype
- nvim-lint can lint the compound filetype
- conform format the last filetype in the compound file, one by one
- PlantUML tree-sitter queries from here
โ๏ธ Others
Questions
Control space in Windows Terminal doesn't work
On windows terminal which cannot send Ctrl + Space into shell, you can send Ctrl + Space as Alt + ; by editing windows terminal config json (LocalState/settings.json):
{
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b;"
},
"id": "User.sendInput.63E68121",
"keys": "ctrl+space"
}
]
}
Change the behavior of completion
See https://cmp.saghen.dev/configuration/keymap.html and change lua/plugins/main/blink-cmp.lua. You should read all the docs.
Change the NvChad UI
It may be possible. But it may require times to config.
Tips & Tricks
-
Typing VNI, Telex, VIQR, set
:set keymap=vietnamese-telex_utf-8
References
- Alexis12119
Special thanks to Alexis!
- nikolovlazar
- Integralist
Has ghostty type
- catgoose
- cameronr
- dynamo
- zlkn
Stole the treesitter highlight injection