A modern, feature-rich Neovim configuration with a focus on productivity and developer experience
Features • Requirements • Installation • Key Bindings • Screenshots • Plugins • Contributing • License • Discussions
Table of Contents
- Features
- Requirements
- Installation
- Key Bindings
- Screenshots
- Plugins
- Contributing
- Development
- License
- Community
- Acknowledgements
Features
- 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
Requirements
- Neovim 0.10+ - Required for
vim.system(),splitkeep, and modern LSP features - Nerd Font - Required for icons
- External dependencies:
Installation
⚠️ 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/nvimOpen 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/nvimKey Bindings
💡 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.
Screenshots
Main editor with Telescope file finder
Code editing with LSP diagnostics
Integrated terminal experience
Plugins
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
Contributing
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
Development
This configuration includes a comprehensive testing framework and development tools:
- Testing: Run
make testto execute all tests - Linting: Run
make lintto check code quality - Formatting: Run
make formatto format Lua code - Git Hooks: Run
./scripts/setup-hooks.shto 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.
License
Community
- 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
Acknowledgements
- 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



