Welcome to my personalized Neovim configuration! This configuration is tailored primarily for DevOps tasks but can also be utilized by developers working with languages like Bash, Go, JSON, Python, Terraform, TypeScript, and more.
I've aimed to streamline the installation process by creating an installation
script based on flake.nix
scripts for your preferred distributions (you can even test it on Docker images).
- DevOps-Centric: This Neovim setup is optimized for DevOps workflows, enhancing your efficiency in tasks related to infrastructure, automation, and more.
- Developer-Friendly: Even if you're a developer working with various programming languages such as Bash, Deno, Go, JSON, Nix, Python, Terraform, TypeScript, etc., this configuration has you covered.
- ⚙️ Core
- Neovim 0.10.x
- A modern plugin manager for Neovim Lazy
- Icons package mini.icons, nvim-web-devicons
- Folder & code visualiser neotree, outline
- Completion engine cmp
- Notification noice
- Find, Filter, Preview, Pick telescope, spectre
- Improve the default vim.ui interfaces dressing
- 🖥️ Appearance
- A clean, dark Neovim colorscheme tokyonight
- A vim-startify like dashboard
- Status line & tabline bufferline, lualine
- Easily create and manage predefined window layouts edgy
- 🪟 IDE
- Key bindings that stick which-key
- Git integration for buffers gitsigns, neogit
- Indent guides indent_blankline
- AI
- Github Copilot
- Neovim like using Cursor AI IDE Avante
- LSP, diagnostic, linting
- Keymap popup which-key
- tools
- Preview markdown result mardown-preview,
- Convert ascii to tree asciitree
- ⛏️ External
- Conventional commits cocogitto
To add or remove a language, you need to modify the following files:
flake.nix
lua/config/options.lua
lua/plugins/code/conform.lua
lua/plugins/code/lspconfig.lua
lua/plugins/code/nvim-lint.lua
lua/plugins/code/treesitter.lua
lua/plugins/editor/filetype.lua
Language marketplace list:
The below table show the languages fully supporter (LSP, highlighting, format, lint/diagnostic, completion, action).
Language | LSP | HL | FO | Lint | cmp | CA | Plugins |
---|---|---|---|---|---|---|---|
deno | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (denols) |
javascript | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (denols) |
dockerfile | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (dockerls) |
lua | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (lua_ls) |
markdown | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (marksman), nvim-lint(markdownlint), conform(deno_fmt) |
nix | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (nixd, nil_ls) |
openscad | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (openscad-lsp) |
python | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (ruff_lsp) |
scala | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (metals) |
shell | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (bashls), conform(shellharden) |
terraform | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig(terraform, terraform-ls |
tex/latex | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | vimtex, lspconfig(texlab) |
typescript | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig (denols) |
yaml | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | lspconfig(yamlls) |
Language | LSP | HL | FO | Lint | cmp | CA | Plugins |
---|---|---|---|---|---|---|---|
ansible | ✅ | ✅ | ❌ | ✅ | ❌ | 🔳 | ansiblels, ansible-lint |
d2 | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | d2-vim |
diagram | 🔳 | ❌ | ❌ | ❌ | 🔳 | 🔳 | venn |
docker-compose | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | TODO |
gnuplot | 🔳 | ✅ | 🔳 | 🔳 | 🔳 | 🔳 | Use filetype.nvim type detection |
go | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | TODO |
json | ✅ | ✅ | ✅ | ✅ | 🔳 | 🔳 | lspconfig(jsonls), efm(fixjson) |
justfile | ❌ | ✅ | ✅ | ✅ | 🔳 | 🔳 | lspconfig(jsonls), efm(fixjson) |
ledger | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | vim-just |
lua | ✅ | ✅ | ✅ | ✅ | 🔳 | 🔳 | luacheck, selene, stylua |
makefile | 🔳 | ✅ | ❌ | ✅ | ❌ | 🔳 | checkmake |
vim | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | 🔳 | TODO |
Legend :
LSP-Language Server Protocol / HL-Highlight / FO-Format / CA-Code Action
Main keybinding with <leader>
key :
Key | Category |
---|---|
a | Avante Cursor like |
c | Code |
f | Find/File |
g | Git |
l | LSP |
m | Misc |
s | Search |
t | Toogle |
u | User |
x | Diagnostic |
! | Terminal |
You can use this configuration with neovim >= 0.8.0
If you need install some distribution dependencies use install/<distribname>
script
Supported distributions list:
- archlinux
- debian
- fedora
- nixos
- ubuntu
git clone https://github.com/badele/vide.git ~/.config/vide
cd ~/.config/vide
make docker-run DISTRIB=<distribname>
make check
nvim
Before installing vide in your distribution, you must install & configure nix.
Distribution | Installation command |
---|---|
archlinux | pacman -S git nix |
debian | apt-get git nix |
fedora | dnf install git xz && manual nix installation |
nixos | no need installation |
ubuntu | apt-get git nix |
Manual nix installation :
curl -L https://nixos.org/nix/install | sh -s -- --daemon --yes
echo "extra-experimental-features = nix-command flakes" >> /etc/nix/nix.conf
Preserve your current nvim configuration
git clone https://github.com/badele/vide.git ~/.config/vide
cd ~/.config/vide
nix develop
make check
make try-nvim
Warning: This replaces your current nvim configuration, your current configuration is backed up
mv ~/.config/nvim ~/.config/nvim.bak-$(date +%s)
git clone https://github.com/badele/vide.git ~/.config/nvim
cd ~/.config/nvim
nix develop
make check
nvim
check Check requirements installation
distrib-list List supported distribution
docker-build Build <DISTRIB> docker image
docker-run Run <DISTRIB> docker image
help This help
try-nvim Try nvim without update your current nvim configuration
- vide
- Define
lazy
&event
option for all plugins - Add markdown preview keybinding on
<leader>mm
or<leader>mp
- Define
- search plugins for :
- todo or org alternative
- vim-sops
- try
- legendary.nvim
- neorg
- ALE
- vimwiki
- incline
Many snippets come from the following projects, thanks to the contributors of these projects