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 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.
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