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
go
python
sql
(postgresql)- Use vim-dadbod
- With postgresql, use postgrestools
github
(github_action)gitlab
shell
docker
- Others:
java
c
,cpp
html
css
react
tailwind
c#
/cs
flutter
(dart)vim
rust
kotlin
powershell
sql
mssql: Haven't test
lua
Just for configuring neovim :((
- Ops:
groovy
+jenkinsfile
hcl
+terraform
kubernetes
helm
nginx
ansible
- Configuring languages:
toml
yaml
xml
config
(sshconfig, tmux)kmonad
- Writing:
markdown
latex
Note
See lua/plugins/extras/languages/
for more detail
- neovim:
version >= 0.11
make
: Some plugins require thiscurl
delta
ripgrep
: telescope, vimgrep replacementfd
: telescopenpm
: for some plugins and stuff installed via Masongo
: Some stuff installed via Mason
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
leader
is 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-k> |
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
languages
pack require others, you should (or must?) enable yourself:rest
:http
jenkins
:groovy
react
:typescript
ansible
:yaml
(for yaml syntax highlighting)
- Set
$NVIM_NO_IDE
to any value to disable lsp, format, lint (quick editing)Ex:
NVIM_NO_IDE=1 lazygit # commit, quick edit
- Working with
sql
:- Use compound filetype
- Set the file type
sql
orplsql
for treesitter highlighting, then the custom filetype after it (for linter and formatter attach to)Ex:
sql.postgresql
,plsql.postgresql
-
# vim: set ft=sql.postgresql:
- 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_ls
includesyaml_ls
already, no need to runyaml_ls
- With
groovy-language-server
, ensure you are usingjava@18
or so...
lazy.nvim
only runconfig
andinit
once. 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
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