A personalized Neovim configuration that started from kickstart.nvim and evolved into a fully modular setup tailored to my workflow.
~/.config/nvim/
├── init.lua                    # Core settings and plugin loader
├── lua/
│   └── zhann/
│       ├── plugins/           # All plugin configurations
│       │   ├── blink-cmp.lua
│       │   ├── conform.lua
│       │   ├── gitsigns.lua
│       │   ├── telescope.lua
│       │   └── ...
│       └── themes/           # Theme configurations
│           └── catppuccin.lua
└── lazy-lock.json            # Plugin version lock file
- Neovim stable or nightly
 - Git
 - Make, gcc (for compiling some plugins)
 - ripgrep
 - fd
 - Node.js (for prettier and other JS-based tools)
 - A Nerd Font (optional but recommended)
 
Note
Backup your previous configuration (if any exists)
- 
Backup your existing Neovim configuration:
mv ~/.config/nvim ~/.config/nvim.bak
 - 
Clone this configuration:
git clone <your-repo-url> ~/.config/nvim
 - 
Start Neovim:
nvim
 - 
Wait for plugins to install automatically
 
- Leader key: 
<Space> - Format current buffer: 
<leader>f - Toggle file explorer: 
\ 
- Move between windows: 
<C-h/j/k/l> - Toggle window zoom: 
<leader>z 
- Go to definition: 
grd - Find references: 
grr - Rename: 
grn - Code action: 
gra - Go to implementation: 
gri 
- Find files: 
<leader>sf - Live grep: 
<leader>sg - Search help: 
<leader>sh - Search buffers: 
<leader><leader> 
The following language servers and tools are automatically installed:
- Ruby: ruby-lsp, rubocop
 - Lua: lua-language-server, stylua
 - Terraform/OpenTofu: terraform-ls, tflint, tofu_fmt
 - Web: prettier (JSON, YAML, Markdown)
 - Shell: shfmt
 
The most frequently modified settings are now accessible at the top of init.lua in the User Configuration section:
-- Formatters by file type
vim.g.formatters_by_ft = {
  lua = { 'stylua' },
  ruby = { 'rubocop' },
  -- Add your formatters here
}
-- Linters by file type
vim.g.linters_by_ft = {
  markdown = { 'markdownlint' },
  -- Add your linters here
}
-- Tools to automatically install
vim.g.mason_ensure_installed = {
  'ruby-lsp',
  'stylua',
  -- Add language servers, linters, and formatters here
}After modifying these settings, restart Neovim for changes to take effect.
Create a new file in lua/zhann/plugins/ with the plugin specification:
-- lua/zhann/plugins/my-plugin.lua
return {
  'author/plugin-name',
  opts = {
    -- configuration
  }
}For deeper customization beyond the common settings, each plugin has its own file in lua/zhann/plugins/. Edit the relevant file and restart Neovim.
Key plugin files:
conform.lua- Formatter configuration (usesvim.g.formatters_by_ft)nvim-lint.lua- Linter configuration (usesvim.g.linters_by_ft)nvim-lspconfig.lua- LSP server configuration and Mason tool installation
This configuration started from kickstart.nvim, which provided an excellent foundation for learning Neovim configuration. Thanks to the kickstart.nvim maintainers for creating such a well-documented starting point.
MIT License (same as kickstart.nvim)