███╗ ██╗███████╗ ██████╗ ████████╗██╗██████╗ ██╗ ██╗
████╗ ██║██╔════╝██╔═══██╗╚══██╔══╝██║██╔══██╗╚██╗ ██╔╝
██╔██╗ ██║█████╗ ██║ ██║ ██║ ██║██║ ██║ ╚████╔╝
██║╚██╗██║██╔══╝ ██║ ██║ ██║ ██║██║ ██║ ╚██╔╝
██║ ╚████║███████╗╚██████╔╝ ██║ ██║██████╔╝ ██║
╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═╝
A modern, modular Neovim configuration focused on development productivity.
- 🚀 Fast startup with lazy loading and performance optimizations
- 🔧 Modular structure - easy to customize and maintain
- 💻 Multi-language LSP support (C/C++, Rust, Python, JS/TS, HTML, CSS, Bash, Lua, Markdown)
- 🎯 Intelligent completion with nvim-cmp
- 🔍 Fuzzy finding with Telescope
- 🌳 File explorer with Neo-tree
- 🐛 Debugging support with DAP
- 🤖 GitHub Copilot integration
- 🎨 Beautiful UI with Dracula theme and BufferLine
- 📋 VSCode-like experience with familiar keybindings
- ⚡ Enhanced navigation with Flash.nvim for quick jumps
- 🔤 Smart text objects with Treesitter textobjects
- 📖 Markdown preview with live reload
~/.config/nvim/
├── init.lua # Main entry point
├── lua/
│ ├── config/ # Core configuration
│ │ ├── globals.lua # Global settings & performance
│ │ ├── options.lua # Vim settings & options
│ │ ├── keymaps.lua # All keybindings
│ │ ├── autocmds.lua # Autocommands & custom commands
│ │ └── lazy.lua # Plugin manager setup
│ └── plugins/ # Plugin configurations
│ ├── core.lua # Essential plugins
│ ├── lsp.lua # Language servers & completion
│ ├── ui.lua # UI components & navigation
│ ├── file-explorer.lua # File browser
│ └── development.lua # Dev tools & utilities
-
Backup your existing config:
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this config:
git clone [email protected]:jackoske/neotidy.git ~/.config/nvim
-
Start Neovim:
nvim
-
Install language servers:
:Mason
Add plugins to the appropriate file in lua/plugins/:
- UI plugins →
lua/plugins/ui.lua - LSP/Language support →
lua/plugins/lsp.lua - Development tools →
lua/plugins/development.lua - Essential features →
lua/plugins/core.lua
- Global settings →
lua/config/globals.lua - Vim options →
lua/config/options.lua - Keybindings →
lua/config/keymaps.lua - Autocommands →
lua/config/autocmds.lua
-
Add the LSP server to
lua/plugins/lsp.lua:local servers = { -- existing servers... your_language_server = {}, }
-
Add formatter to the same file:
formatters_by_ft = { -- existing formatters... your_language = { "your_formatter" }, }
| Key | Action |
|---|---|
<Space> |
Leader key |
<Esc> |
Clear search highlights |
<C-h/j/k/l> |
Navigate windows |
| Key | Action |
|---|---|
<leader>e |
Toggle file explorer |
<C-e> |
Toggle file explorer (VSCode style) |
\\ |
Reveal current file in explorer |
| Key | Action |
|---|---|
<leader>sf |
Find files |
<leader>sg |
Live grep |
<leader><leader> |
Find buffers |
<leader>sh |
Help tags |
<leader>sk |
Keymaps |
| Key | Action |
|---|---|
<C-n/p> |
Next/Previous buffer |
gt/gT |
Next/Previous buffer |
<leader>bn/bp |
Next/Previous buffer |
<leader>x |
Close buffer |
<leader>X |
Force close buffer |
<leader>bd |
Close buffer |
<leader>1-9 |
Go to buffer 1-9 |
<Alt-Left/Right> |
Switch buffers |
| Key | Action |
|---|---|
s |
Flash jump to any location |
S |
Flash jump to treesitter node |
af/if |
Select function outer/inner |
ac/ic |
Select class outer/inner |
]m/[m |
Next/Previous function |
]]/[[ |
Next/Previous class |
| Key | Action |
|---|---|
gd |
Go to definition |
gr |
Go to references |
<leader>ca |
Code actions |
<leader>rn |
Rename symbol |
<leader>f |
Format buffer |
[d/]d |
Previous/Next diagnostic |
| Key | Action |
|---|---|
<leader>mp |
Toggle markdown preview |
| Key | Action |
|---|---|
<F5> |
Start/Continue debugging |
<F1-F3> |
Step into/over/out |
<leader>b |
Toggle breakpoint |
<F7> |
Toggle debug UI |
| Language | LSP Server | Formatter | Linter |
|---|---|---|---|
| Lua | lua_ls | stylua | - |
| Python | pyright | black, isort | pylint |
| JavaScript/TypeScript | ts_ls | prettier | eslint_d |
| C/C++ | clangd | clang-format | - |
| Rust | rust_analyzer | rustfmt | - |
| HTML | html | prettier | - |
| CSS | cssls | prettier | - |
| JSON | jsonls | prettier | - |
| Bash | bashls | shfmt | - |
| Markdown | marksman | prettier | markdownlint |
:Mason- Open Mason (LSP installer):Lazy- Open Lazy (plugin manager):checkhealth- Check Neovim health:LspInfo- Show LSP information:Neotree toggle- Toggle file explorer
- lazy.nvim - Plugin manager
- which-key - Keybinding hints
- gitsigns - Git integration
- mini.nvim - Collection of small plugins
- todo-comments - TODO highlighting
- nvim-lspconfig - LSP configuration
- mason.nvim - LSP installer
- nvim-cmp - Completion engine
- conform.nvim - Formatting
- telescope - Fuzzy finder
- dracula.nvim - Color scheme
- bufferline - Tab-like buffers
- treesitter - Syntax highlighting
- neo-tree - File explorer
- nvim-dap - Debugging
- nvim-lint - Linting
- copilot.vim - AI assistance
- autopairs - Auto brackets
- indent-blankline - Indent guides
- markdown-preview - Live markdown preview
- flash.nvim - Enhanced jumping and navigation
- treesitter-textobjects - Smart text object selection
- Check if language server is installed:
:Mason - Check LSP status:
:LspInfo - Check health:
:checkhealth lsp
- Update plugins:
:Lazy sync - Check for errors:
:Lazy log - Restart Neovim
- Check startup time:
nvim --startuptime startup.log - Profile plugins:
:Lazy profile
MIT License - Feel free to use and modify as you like!
This configuration was originally based on kickstart.nvim by the Neovim community. Kickstart.nvim provided an excellent foundation and starting point for learning Neovim configuration.
Original kickstart.nvim contributors:
- TJ DeVries and the nvim-lua community
- All the contributors who made kickstart.nvim an amazing learning resource
Key differences from kickstart.nvim:
- 🏗️ Modular structure - Split into organized files instead of single
init.lua - 🎯 Enhanced language support - Added C/C++, Rust, and more LSP servers
- 🎨 Custom UI - BufferLine, enhanced keybindings, VSCode-like experience
- 📁 File explorer - Neo-tree integration with PDF support
- 🛠️ Development tools - Enhanced debugging, linting, and development workflow
While this configuration has evolved significantly, the core philosophy and many foundational concepts come from the excellent work of the kickstart.nvim project.
Happy coding! 👾