My customization configuration for neovim
- ๐ฅ Transform your Neovim into a full-fledged IDE
- ๐ Blazingly fast and furious (see benchmark)
- ๐งน Sane default settings for options, autocmds, and keymaps
- ๐ฆ Comes with a wealth of plugins pre-configured and ready to use for DevOps and SA, like me
- Supported many languages, frameworks and tools (see here)
- Load per machine configurations via
lua/per_machine/init.lua
if exists (see my config, managed by chezmoi) - Lazy install treesitter parsers, LSP servers, formatters, linters, debug adapters... if needed when open file
- Bundle languages/tools when containerize or builtin development environments by
_G.bundle_languages
in init.lua (see my config) - Enable/disable languages/tools by
_G.enabled_languages
in init.lua (see my config) - Easy to show which tools are installed in lualine
- Trigger linters/formatters if installed only
- Add bunch of missing features of the different tools:
jira
shellcheck
sonarlint
(with connected mode for both SonarQube and SonarCloud)- Spell check for comments
- Render diagram on kitty terminal (also support
zellij
) - etc
- Integrate with various tools:
Caution
- Not used for neovim < 0.11 or vim (any version)
- Used for Linux only or Mac (not sure)
See the list of supported things in lua/config/languages.lua
- Arduino
- AWK
- Bash (include some filetypes for build package on Arch, Gentoo)
- C/C++
- C#
- CSS/Less
- Cucumber
- Fish
- Go
- HTML
- Javascript/Typescript
- Java
- LaTeX
- Lua (of course)
- PHP
- Python
- Ruby
- Rust
- SASS/SCSS
- Solidity
- SQL
- Typst
- Zig
- Angular
- Rails
- Rust
- Vue
- Ansible
- Beancount
- Bicep
- CMake
- CSV
- D2
- DBML
- Dockerfile
- Git (rebase, commit)
- GoTemplate (Helm template...)
- Groovy (also for Jenkinsfile)
- HTTP Rest file
- Hyprlang
- JSON
- Make tools (autoconf, automake, make)
- Markdown
- Nginx
- Nix
- OpenAPI
- PromQL (Prometheus)
- SystemD
- Terraform
- Terragrunt
- TOML
- Treesitter
- XML
- YAML
- Yuck
- Clone this repository to ~/.config/nvim.
rm -rf ~/.config/nvim
git clone https://gitlab.com/dynamo-config/vim ~/.config/nvim --single-branch --depth 1
- After that, open Neovim. That's all! Hope you enjoy with neovim ๐!
My habit key is Space
. You can explore it :)
- Startup time (benchmark by vim-startuptime):
startup: 43.7
event time percent plot
init.lua 32.30 73.98 โโโโโโโโโโโโโโโโโโโโโโโโโโ
config.lazy 31.68 72.56 โโโโโโโโโโโโโโโโโโโโโโโโโโ
UIEnter autocommands 3.86 8.84 โโโโ
dial.augend 2.22 5.08 โโ
config.options 1.75 4.00 โโ
reading ShaDa 1.55 3.54 โโ
config.filetype 1.38 3.17 โโ
catppuccin.vim 1.28 2.94 โ
vim.filetype 1.07 2.44 โ
neogen.utilities.nod 1.04 2.38 โ
- By hyprfine on my laptop machine:
> hyperfine "nvim +q" "nvim +q --headless" "nvim README.md +q --headless" "nvim lua/config/lazy.lua +q"
Benchmark 1: nvim +q
Time (mean ยฑ ฯ): 45.0 ms ยฑ 4.4 ms [User: 31.3 ms, System: 12.1 ms]
Range (min โฆ max): 40.3 ms โฆ 60.4 ms 49 runs
Benchmark 2: nvim +q --headless
Time (mean ยฑ ฯ): 72.5 ms ยฑ 41.4 ms [User: 49.1 ms, System: 20.6 ms]
Range (min โฆ max): 38.6 ms โฆ 140.0 ms 68 runs
Benchmark 3: nvim README.md +q --headless
Time (mean ยฑ ฯ): 83.0 ms ยฑ 46.1 ms [User: 58.7 ms, System: 21.4 ms]
Range (min โฆ max): 42.3 ms โฆ 152.8 ms 21 runs
Benchmark 4: nvim lua/config/lazy.lua +q
Time (mean ยฑ ฯ): 328.6 ms ยฑ 14.8 ms [User: 331.3 ms, System: 160.7 ms]
Range (min โฆ max): 298.3 ms โฆ 353.1 ms 10 runs
Summary
nvim +q ran
1.61 ยฑ 0.93 times faster than nvim +q --headless
1.84 ยฑ 1.04 times faster than nvim README.md +q --headless
7.30 ยฑ 0.78 times faster than nvim lua/config/lazy.lua +q