A modern, minimal Neovim configuration focused on Python and Shell development.
- 🎨 Theme: Gruvbox colorscheme
- 📁 File Explorer: Neo-tree
- 💻 Terminal: ToggleTerm with floating window support
- 🔧 LSP: Python (Pyright) and Bash support
- ✍️ Auto-completion: nvim-cmp with multiple sources
- 🎯 Formatting: Ruff for Python, shfmt for Shell
- 🌳 Syntax Highlighting: Treesitter
- ⌨️ Key Hints: which-key for discovering shortcuts
- 📝 Markdown Preview: Glow
- lazy.nvim - Plugin manager
- which-key.nvim - Keybinding helper
- gruvbox.nvim - Colorscheme
- neo-tree.nvim - File explorer
- nvim-web-devicons - Icons
- mason.nvim - LSP installer
- nvim-lspconfig - LSP configurations
- nvim-cmp - Completion engine
- LuaSnip - Snippet engine
- nvim-treesitter - Syntax highlighting
- conform.nvim - Code formatting
- toggleterm.nvim - Terminal manager
- glow.nvim - Markdown preview
- Backup existing config (if any):
mv ~/.config/nvim ~/.config/nvim.backup- Clone this repository:
git clone https://github.com/YOUR_USERNAME/nvim-config.git ~/.config/nvim- Open Neovim:
nvimPlugins will be automatically installed on first launch.
- Install formatters (after plugins are installed):
:MasonInstall ruff shfmt<Space> is the leader key.
| Key | Action |
|---|---|
<Space>e |
Toggle file explorer |
<Ctrl-\> |
Toggle terminal |
<Ctrl-s> |
Save file |
<Space>w |
Save |
<Space>q |
Quit |
| Key | Action |
|---|---|
<Ctrl-h/j/k/l> |
Navigate between windows |
<Shift-h/l> |
Previous/Next buffer |
<Space>x |
Close buffer |
| Key | Action |
|---|---|
gd |
Go to definition |
gr |
Show references |
K |
Hover documentation |
<Space>rn |
Rename symbol |
<Space>ca |
Code action |
<Space>fm |
Format file |
| Key | Action |
|---|---|
<Ctrl-\> |
Toggle terminal |
<Space>tf |
Float terminal |
<Space>th |
Horizontal terminal |
<Space>tv |
Vertical terminal |
<Esc> (in terminal) |
Exit terminal mode |
| Key | Action |
|---|---|
<Ctrl-Space> |
Trigger completion |
<Ctrl-j/k> |
Next/Previous suggestion |
<Tab> |
Select/Expand snippet |
<Enter> |
Confirm selection |
~/.config/nvim/
├── init.lua # Entry point
├── lazy-lock.json # Plugin versions (auto-generated)
├── lua/
│ ├── config/
│ │ ├── options.lua # Vim options
│ │ ├── keymaps.lua # Key mappings
│ │ └── lazy.lua # Lazy.nvim setup
│ ├── plugins/
│ │ ├── cmp.lua # Auto-completion
│ │ ├── conform.lua # Code formatting
│ │ ├── glow.lua # Markdown preview
│ │ ├── lsp.lua # LSP configuration
│ │ ├── mason.lua # LSP installer
│ │ ├── neo-tree.lua # File explorer
│ │ ├── toggleterm.lua # Terminal
│ │ └── which-key.lua # Key hints
│ └── plugins.lua # Additional plugins (theme, treesitter)
└── README.md
Edit lua/plugins.lua and replace gruvbox with your preferred colorscheme.
Edit lua/plugins/lsp.lua and add servers to ensure_installed list.
Edit lua/config/keymaps.lua and lua/plugins/which-key.lua.
- This config uses Ruff for Python formatting (fast and modern)
- LSP servers are automatically installed via Mason
- Format on save is enabled by default
- Terminal uses floating window by default
Thanks to all the amazing plugin authors and the Neovim community!
MIT