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.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
- Integrate with various tools:
Caution
- Not used for neovim < 0.10 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