fast, simple, and elegant nvim - Minimal, modern and functional Neovim configuration

This configuration is packed with features to make your Neovim experience as smooth as possible.
- Plugin Manager: Fast plugin management with
lazy.nvim. - Modern UI: A beautiful and functional UI with
tokyo-nighttheme,lualine.nvim,bufferline.nvim, andalpha-nvim. - Smart Editing:
- Autocompletion with
nvim-cmpandLuaSnip. - Advanced syntax highlighting with
nvim-treesitter. - Auto-formatting on save with
conform.nvim. - Auto-pairs, surround, and comments with various plugins.
- Autocompletion with
- LSP: Full LSP support with
mason.nvimandlspconfig. - File Explorer: A modern file explorer with
neo-tree.nvim. - Search: Fast and powerful search with
telescope.nvim. - Git Integration: Git integration with
gitsigns.nvim. - Animations: Smooth animations for a better user experience.
- Which-key: A handy keybinding guide with
which-key.nvim. - Command Line: Smart command line suggestions with
cmp-cmdline.
If you have issues with corrupted plugins or configurations, clean everything first:
Linux / MacOS (unix):
rm -rf ~/.config/nvim
rm -rf ~/.local/state/nvim
rm -rf ~/.local/share/nvimFlatpak (linux):
rm -rf ~/.var/app/io.neovim.nvim/config/nvim
rm -rf ~/.var/app/io.neovim.nvim/data/nvim
rm -rf ~/.var/app/io.neovim.nvim/.local/state/nvimWindows CMD:
rd -r ~\AppData\Local\nvim
rd -r ~\AppData\Local\nvim-data
Windows PowerShell:
rm -Force ~\AppData\Local\nvim
rm -Force ~\AppData\Local\nvim-dataFor NixOS installation instructions, please see NIX.md.
- Neovim 0.9+
- Git
- Node.js (for TypeScript LSP)
- Python (for Python LSP)
Option 1: Automatic installer (Recommended)
# Clone the repository
git clone https://github.com/Maurux01/simplevim.git
cd simplevim
# Windows
install.bat
# Linux/macOS
chmod +x install.sh
./install.shnvimAll plugins will be installed automatically on first run. Wait for it to finish and restart Neovim.
The leader key is set to the space bar.
<Space>- Leader key (shows which-key after 300ms)<Ctrl-s>- Save file<leader>ch- Clear search highlighting
<Space>w- Save file<Space>wn- New file<Space>wd- Delete current file<Space>wm- Create directory
<Space>q- Quit<Space>q!- Quit without saving<Space>qq- Save and quit
<Ctrl-h/j/k/l>- Move between windows<Shift-h/l>- Switch between buffers<Ctrl-Shift-j/k>- Move lines up/down
<Space>e- Open/close Neo-tree
<Space>ff- Find files<Space>fg- Find text<Space>fb- Find buffers<Space>fr- Recent files
gd- Go to definitionK- Show documentation<Space>rn- Rename<Space>ca- Code actions<Space>f- Format code
]h/[h- Next/previous change<Space>ghs- Stage hunk<Space>ghr- Reset hunk<Space>ghp- Preview hunk
Navigation:
<Shift-h/l>- Previous/Next buffer<Tab>- Next buffer<Shift-Tab>- Previous buffer<Space>bn- Next buffer<Space>bp- Previous buffer<Space>bf- First buffer<Space>bl- Last buffer
Management:
<Space>bd- Close buffer<Space>bo- Close other buffers<Space>ba- Close all buffers
Navigation:
<Ctrl-h/j/k/l>- Move between windows<Alt-h/j/k/l>- Alternative navigation
Create/Close:
<Space>sv- Vertical split<Space>sh- Horizontal split<Space>sx- Close current split<Space>so- Close other splits<Space>sm- Maximize/restore split
Resize:
<Shift-Arrows>- Fast resize (±5)<Ctrl-Arrows>- Slow resize (±2)<Space>s+/-- Height ±10<Space>s</>- Width ±10<Space>se- Equal sizes
Move windows:
<Space>sH/J/K/L- Move window left/down/up/right
<Space>th- Horizontal terminal<Space>tv- Vertical terminal<Space>tt- Terminal in new tab<Esc>- Exit terminal mode (in terminal)<Ctrl-h/j/k/l>- Navigate from terminal
<Space>to- New tab<Space>tx- Close tab<Space>tn- Next tab<Space>tp- Previous tab
gcc- Comment/uncomment linegc- Comment/uncomment (normal and visual)<Space>/- Toggle comment<Ctrl-/>- Toggle commentgb- Block comment (normal and visual)
<A-n>- Select next occurrence<A-p>- Select previous occurrence<A-x>- Skip current occurrence<leader>mc- Quit multicursor mode
<Space>nd- Dismiss all notifications
<Space>ut- Toggle transparency
- Spaces shown as dots (·)
- Tabs shown as double dots (::)
- Cursor with colorful tail animation
- Smooth scroll with animations
- Animated indent guides
<Space>ct- Change theme (cycle through all):Theme tokyo- Tokyo Night:Theme cat- Catppuccin Mocha:Theme gruvbox- Gruvbox Hard:Theme kanagawa- Kanagawa Wave:Theme dracula- Dracula:Theme onedark- One Dark:Theme nord- Nord:Theme nightfox- Nightfox:Theme monokai- Monokai Pro:Theme cyber- Cyberdream
This configuration preserves most of the default Vim keybindings. Here are some of the most common ones:
i- Insert before cursora- Append after cursorI- Insert at the beginning of the lineA- Append at the end of the lineo- Open a new line belowO- Open a new line above
r- Replace a single characterc- Change (delete and enter insert mode)C- Change to the end of the lines- Substitute a characterS- Substitute a line
u- Undo<C-r>- Redo
y- Yank (copy)p- Paste after cursorP- Paste before cursor
x- Delete characterdw- Delete worddd- Delete line
h/j/k/l- Left/down/up/rightw/b- Next/previous word0/$- Start/end of linegg/G- Start/end of file
/- Search forward?- Search backwardn/N- Next/previous occurrence
v- Character-wise visual modeV- Line-wise visual mode<C-v>- Block-wise visual mode
m{a-z}- Set a mark'{a-z}- Jump to a mark
q{a-z}- Record a macro@{a-z}- Execute a macro
The configuration is organized in modules:
lua/
├── config/
│ ├── options.lua # Neovim options + whitespace
│ ├── keymaps.lua # Keybindings + which-key
│ └── lazy.lua # lazy.nvim configuration
└── plugins/
├── animations.lua # Cursor, scroll, which-key, indent
├── colorscheme.lua # Theme
├── lsp.lua # Language Server Protocol
├── cmp.lua # Autocompletion
├── telescope.lua # Search
├── neo-tree.lua # Explorer
├── ui.lua # Interface + cursor colors
├── git.lua # Git integration
├── formatting.lua # Auto formatting
├── treesitter.lua # Syntax highlighting
├── snippets.lua # Custom snippets
├── editor.lua # Editing tools
├── cmdline.lua # Command line suggestions
└── windows.lua # Window management
Option 1: Quick command
:Theme cat " Catppuccin
:Theme gruvbox " Gruvbox
:Theme kanagawa " Kanagawa
:Theme dracula " Dracula
:Theme onedark " One Dark
:Theme nord " Nord
:Theme nightfox " Nightfox
:Theme monokai " Monokai Pro
:Theme cyber " Cyberdream
:Theme tokyo " Tokyo Night (default)Option 2: Keyboard shortcut
<Space>ct- Cycle through all themes
Option 3: Change default theme
Edit lua/plugins/colorscheme.lua and change the line:
vim.cmd([[colorscheme tokyonight]])Edit lua/plugins/lsp.lua and add the server to ensure_installed.
To add support for a new language, you need to:
- Install the LSP server:
- Run
:Masonand install the corresponding language server.
- Run
- Install the parser:
- The parser will be installed automatically by
nvim-treesitterif it's available. - You can check the list of available parsers here.
- The parser will be installed automatically by
- Install the formatter:
- Find a formatter for your language and install it.
- Add the formatter to the
conform.nvimconfiguration inlua/plugins/formatting.lua.
Example for adding rust:
-
Install
rust-analyzerwith:Mason. -
nvim-treesitterwill install therustparser automatically. -
Install
rustfmtwithrustup component add rustfmt. -
Add
rustfmttolua/plugins/formatting.lua:require("conform").setup({ formatters_by_ft = { -- ... rust = { "rustfmt" }, -- ... }, })
:Lazy- Manage plugins:Mason- Install LSP servers:checkhealth- Check configuration:ConformInfo- Formatter info
Install a Nerd Font: https://www.nerdfonts.com/
:MasonInstall the corresponding server (lua_ls, pyright, tsserver, etc.)
Verify you have the formatters installed:
npm install -g prettier # For JS/TS/JSON/HTML/CSS
pip install black isort # For PythonMIT License - Use it however you want 🎉










