A modern, feature-rich Neovim configuration with a focus on productivity and developer experience
Features • Requirements • Installation • Key Bindings • Screenshots • Plugins • Contributing • License • Discussions
- Features
- Requirements
- Installation
- Key Bindings
- Screenshots
- Plugins
- Contributing
- Development
- License
- Community
- Acknowledgements
- Modern and elegant UI with Catppuccin theme
- Powerful LSP integration for dozens of languages
- Treesitter-based syntax highlighting and text objects
- Fuzzy finding with Telescope and FZF
- Git integration with Gitsigns and Diffview
- Extensive debugging support via DAP
- Testing frameworks for multiple languages
- AI integration with Claude Code and Copilot
- Integrated terminal experience
- Comprehensive plugin ecosystem
- Advanced autocompletion and snippets
- Fast startup and responsive editing experience
- Neovim 0.10+ - Required for
vim.system()
,splitkeep
, and modern LSP features - Nerd Font - Required for icons
- External dependencies:
⚠️ WARNING: Always review the code before installing a configuration.
Clone the repository and install the plugins:
git clone git@github.com:greggh/nvim ~/.config/greggh/nvim
Open Neovim with this config:
NVIM_APPNAME=greggh/nvim/ nvim
Or set it as your default by copying to the standard location:
git clone git@github.com:greggh/nvim ~/.config/nvim
💡 Press
<Space>
to see available key bindings via which-key
Category | Key Binding | Description |
---|---|---|
General | <C-s> or <leader>qs |
Save file |
<C-q> or <leader>qq |
Quit | |
<leader>qz |
Force quit | |
Navigation | <leader>e |
File explorer |
<leader>ff |
Find files | |
<leader>fg |
Live grep | |
Git | <leader>gg |
LazyGit |
<leader>gl |
View git log | |
<leader>gb |
View git blame | |
LSP | <leader>lo |
Toggle LSP outline |
<leader>xw |
Find in workspace | |
<leader>ca |
Code actions | |
Testing | <leader>tr |
Run nearest test |
<leader>tt |
Run file tests | |
AI | <leader>ac |
Toggle Claude Code (normal mode) |
<C-o> |
Toggle Claude Code (terminal mode) | |
Folding | <leader>z0 |
Toggle level 0 |
<leader>z1 |
Toggle level 1 | |
<leader>z2 |
Toggle level 2 | |
Windows | <leader>wm |
Toggle maximize window |
Buffers | <leader>bw |
Close buffer safely |
<leader>bo |
Close other buffers | |
Treesitter | af/if |
Function text object |
ac/ic |
Class text object | |
aa/ia |
Parameter text object | |
[f/]f |
Navigate between functions | |
[c/]c |
Navigate between classes | |
[a/]a |
Navigate between parameters |
For a complete list of keybindings, press <Space>
to see the which-key popup menu.
Main editor with Telescope file finder
Code editing with LSP diagnostics
Integrated terminal experience
This configuration uses lazy.nvim as its plugin manager and includes many powerful plugins:
Click to expand plugin list
- actions-preview.nvim
- auto-save.nvim
- avante.nvim
- blink-ripgrep.nvim
- blink.cmp
- blink.compat
- boole.nvim
- catppuccin
- ccc
- claude-code.nvim
- cmp-cmdline-history
- Comment.nvim
- conform.nvim
- copilot.lua
- depsync.nvim
- diffview.nvim
- dressing.nvim
- dropbar.nvim
- edgy.nvim
- flash.nvim
- friendly-snippets
- gitsigns.nvim
- grug-far.nvim
- hardtime.nvim
- helpview.nvim
- highlight-undo.nvim
- img-clip.nvim
- incline.nvim
- iron.nvim
- laravel-helper.nvim
- lazy.nvim
- lazydev.nvim
- lualine.nvim
- LuaSnip
- markview.nvim
- mason-lspconfig.nvim
- mason-tool-installer.nvim
- mason.nvim
- mini.icons
- mini.sessions
- mini.surround
- neotest-golang
- neotest-jest
- neotest-pest
- neotest-plenary
- neotest-python
- neotest-rust
- neotest-vitest
- neotest
- noice.nvim
- nui.nvim
- nvim-autopairs
- nvim-dap-python
- nvim-dap-ui
- nvim-dap-virtual-text
- nvim-dap
- nvim-lightbulb
- nvim-lint
- nvim-lspconfig
- nvim-nio
- nvim-notify
- nvim-treesitter-context
- nvim-treesitter-textobjects
- nvim-treesitter
- nvim-ts-autotag
- nvim-web-devicons
- one-small-step-for-vimkind
- outline.nvim
- plenary.nvim
- quicker.nvim
- rainbow-delimiters.nvim
- screenkey.nvim
- smart-splits.nvim
- snacks.nvim
- suda
- symbol-usage.nvim
- tide.nvim
- tiny-inline-diagnostic.nvim
- todo-comments.nvim
- treewalker.nvim
- trouble.nvim
- which-key.nvim
- workspace-diagnostics.nvim
- yazi.nvim
Contributions are welcome! Please see CONTRIBUTING.md for detailed guidelines on how to contribute.
To get started:
- Check the open issues or create a new one
- Fork the repository
- Create a new branch for your feature
- Make your changes
- Run the tests (
make test
) and ensure they pass - Submit a pull request
This configuration includes a comprehensive testing framework and development tools:
- Testing: Run
make test
to execute all tests - Linting: Run
make lint
to check code quality - Formatting: Run
make format
to format Lua code - Git Hooks: Run
./scripts/setup-hooks.sh
to set up pre-commit hooks - Automation:
- Automated releases via the GitHub Actions workflow
- Weekly dependency updates check via GitHub Actions
- Comprehensive CI pipeline for testing all changes
For a complete development environment setup, see DEVELOPMENT.md.
- GitHub Discussions - Get help, share ideas, and connect with other users
- GitHub Issues - Report bugs or suggest features
- GitHub Pull Requests - Contribute to the project
- Neovim - The core editor this configuration enhances
- lazy.nvim - Plugin manager that simplifies dependency management
- which-key.nvim - Keybinding discovery tool
- Treesitter - Parsing system for syntax highlighting and code navigation
- nvim-lspconfig - LSP configuration framework
- Catppuccin - The beautiful color scheme used in screenshots
- Nerd Fonts - Iconic fonts used throughout the UI
- Semantic Versioning - Versioning standard used in this project
- Contributor Covenant - Code of Conduct standard
- Keep a Changelog - Changelog format
- LuaCATS - Type annotations for better IDE support
- StyLua - Lua code formatter
- Luacheck - Lua static analyzer and linter
- Dotfyle - Neovim config discovery platform
Made with ❤️ by Gregg Housh