A highly opinionated Neovim setup with essential plugins, sensible defaults, and out-of-the-box LSP / Treesitter support.
-
Core configs
.luarc.jsonfor Lua language server.stylua.tomlfor opinionated code formatting
-
Modular init.lua
- Loads
core/options.lua,core/keymaps.lua,core/snippets.lua - Plugin management via lazy-loading and
lazy-lock.json
- Loads
-
Plugin highlights
- Themes: Nord, One Dark, Tokyo Night
- Autocompletion: nvim-cmp, snippet support
- Navigation: Telescope, Neo-Tree, Harpoon, Bufferline
- Git: Gitsigns, Lazygit integration
- Debugging: nvim-dap + UI
- LSP: Built-in LSP configs with mason.nvim
- Treesitter: Syntax, incremental selection, text objects
- Extras: ChatGPT integration, aerial outline, indent guides, commentary, tmux navigator
-
Troubleshooting
- A dedicated
nvim-troubleshooting.mdguides you through common issues
- A dedicated
-
Clone this repo into your Neovim configuration directory:
git clone https://github.com/Copxer/neovim.git ~/.config/nvim -
Install Neovim 0.9+.
-
Launch Neovim to trigger plugin install:
nvim
- The first run will bootstrap
lazy.nvimand install everything.
- The first run will bootstrap
-
(Optional) Run Stylua against your Lua files:
stylua .
All customization lives under lua/:
lua/core/options.lua— basic Neovim settingslua/core/keymaps.lua— custom keybindingslua/core/snippets.lua— built-in LuaSnip snippetslua/plugins/— one file per plugin to keep things tidy
To add or tweak plugins, open or create a new file in lua/plugins/ following the existing pattern.
- Jump to symbol outline:
<leader>a(Aerial) - Fuzzy file search:
<leader>f(Telescope) - Toggle file explorer:
<leader>e(Neo-Tree) - Git hunks:
[c/]c, use:Gitsignscommands - Debug: open DAP UI with
<leader>d
See core/keymaps.lua for a complete list of mappings.
Consult nvim-troubleshooting.md if you run into:
- Plugin install failures
- LSP or Treesitter errors
- Formatting issues with Stylua
- Missing binaries (e.g.,
lua-language-server,masonpackages)
- Fork the repo
- Create a feature branch (
git checkout -b feature/foo) - Commit your changes (
git commit -m "feat: add foo") - Push to the branch (
git push origin feature/foo) - Open a Pull Request
Built with ❤️ and Lua in mind, inspired by the Neovim community.