https://github.com/dynamotn/neovim-config
My customize configuration for neovim, mirror from
https://github.com/dynamotn/neovim-config
dotfiles lua neovim neovim-dotfiles nvim
Last synced: 5 months ago
JSON representation
My customize configuration for neovim, mirror from
- Host: GitHub
- URL: https://github.com/dynamotn/neovim-config
- Owner: dynamotn
- Created: 2019-09-10T10:10:38.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2025-04-21T18:00:57.000Z (6 months ago)
- Last Synced: 2025-04-21T19:21:55.719Z (6 months ago)
- Topics: dotfiles, lua, neovim, neovim-dotfiles, nvim
- Language: Lua
- Homepage: https://gitlab.com/dynamo-config/vim
- Size: 1.39 MB
- Stars: 14
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# neovim-config
- [neovim-config](#neovim-config)
- [Feature](#feature)
- [Languages, Frameworks, or Tools support](#languages-frameworks-or-tools-support)
- [Languages](#languages)
- [Frameworks](#frameworks)
- [Tools & Markup](#tools--markup)
- [Installation](#installation)
- [Key bindings](#key-bindings)
- [Benchmark](#benchmark)My customization configuration for neovim
[](https://github.com/neovim/neovim)
[](https://lua.org)
[](https://www.gnu.org/licenses/gpl-3.0)## Feature
- ๐ฅ Transform your Neovim into a full-fledged IDE
- ๐ Blazingly fast and furious (see [benchmark](#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](#languages-frameworks-or-tools-support))
- Load per machine configurations via `lua/per_machine.lua` if exists (see [my config](./lua/per_machine.lua.tmpl), managed by [chezmoi](https://www.chezmoi.io/))
- 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](./init.lua) (see [my config](./lua/per_machine.lua.tmpl))
- Enable/disable languages/tools by `_G.enabled_languages` in [init.lua](./init.lua) (see [my config](./lua/per_machine.lua.tmpl))
- 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`
- Spell check for comments
- Render diagram on kitty terminal (also support `zellij`)
- etc
- Integrate with various tools:
- [Obsidian](https://obsidian.md/) by `_G.obsidian_vaults` in [init.lua](./init.lua) (see [my config](./lua/per_machine.lua.tmpl))
- [chezmoi](https://www.chezmoi.io/)
- **Firefox** or **Chrome** browser with [embedded neovim](https://github.com/glacambre/firenvim)
- [zellij](https://zellij.dev/)
- [Codeium](https://codeium.com/), an AI power tools> [!CAUTION]
>
> - Not used for neovim < 0.10 or vim (any version)
> - Used for Linux only or Mac (not sure)## Languages, Frameworks, or Tools support
See the list of supported things in [lua/config/languages.lua](./lua/config/languages.lua)
### Languages
- 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### Frameworks
- Angular
- Rails
- Rust
- Vue### Tools & Markup
- 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## Installation
- Clone this repository to ~/.config/nvim.
```sh
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 :smile:!
## Key bindings
My habit key is `Space`. You can explore it :)
## Benchmark
- Startup time (benchmark by [vim-startuptime](https://github.com/dstein64/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](https://github.com/sharkdp/hyperfine) on my laptop machine:
```sh
> 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 runsBenchmark 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 runsBenchmark 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 runsBenchmark 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 runsSummary
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```