A fast and highly customisable Neovim IDE with lazy loading, and modular configurations.
Heavy and bloated
| Dashboard | Editor |
|---|---|
![]() |
![]() |
| Debugging | AI |
|---|---|
![]() |
![]() |
- 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.
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
- 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
# 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 entering nvim for now. Use nvim --clean ./lua/plugins/extras/languages/init.lua or another editor to edit the lua/plugins/extras/languages/init.lua!!! Otherwise you will install tons of plugins and requirements from what I'm using.
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.
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
- 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...
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
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"
}
]
}See https://cmp.saghen.dev/configuration/keymap.html and change lua/plugins/main/blink-cmp.lua. You should read all the docs.
It may be possible. But it may require times to config.
-
Typing VNI, Telex, VIQR, set
:set keymap=vietnamese-telex_utf-8
- Alexis12119
Special thanks to Alexis!
- nikolovlazar
- Integralist
Has ghostty type
- catgoose
- cameronr
- dynamo
- zlkn
Stole the treesitter highlight injection



