A modern, feature-rich Neovim configuration based on Kickstart.nvim with custom enhancements and VSCode-like key mappings.
- ✅ System Clipboard Integration: Seamless copy/paste with system clipboard
- ✅ Search Highlighting: Persistent search highlights with incremental search
- ✅ Highlighted Yank: Visual feedback when yanking text
- ✅ Surround: Advanced text object manipulation with mini.surround
- ✅ EasyMotion: Quick navigation with hop.nvim (modern alternative)
- ✅ Bookmarks: Persistent bookmarks with vim-bookmarks
- ✅ Git Integration: Git blame, signs, and advanced git operations
- Go: Full LSP support with gopls, formatting, and go.nvim
- TypeScript/JavaScript: Complete web development setup
- Python: LSP, formatting with black and isort
- Rust: Full rust-analyzer integration
- C/C++: clangd support with formatting
- Lua: Optimized for Neovim configuration
- Web Technologies: HTML, CSS, JSON, YAML support
- Shell Scripting: Bash/shell script support
- LSP Integration: Multiple language servers with Mason
- Auto-completion: Advanced completion with nvim-cmp
- Fuzzy Finding: Telescope for files, symbols, and live grep
- Git Integration: Gitsigns, fugitive, and git-blame
- Terminal Management: Integrated terminal with toggleterm
- File Explorer: Modern file tree with nvim-tree
- Code Formatting: Conform.nvim with multiple formatters
- Diagnostics: Trouble.nvim for better error handling
- Session Management: Auto-session for project workflows
- GitHub Copilot: Code completion and suggestions
- Copilot Chat: AI-powered code explanations and fixes
- Claude Code: Advanced AI assistance integration
- Neovim >= 0.9.0
- Git
- A Nerd Font for icons
- Node.js (for some LSP servers)
- Python 3 (for some plugins)
-
Backup your existing config (if any):
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this repository:
git clone git@github.com:xicv/nvim-config.git ~/.config/nvim -
Start Neovim:
nvim
The configuration will automatically install all plugins and language servers on first run.
If you prefer to set up manually:
-
Install required tools:
# macOS brew install neovim node python3 git # Ubuntu/Debian sudo apt install neovim nodejs npm python3 git
-
Clone and start Neovim - plugins will auto-install via lazy.nvim
The leader key is set to , (comma).
| Key | Action |
|---|---|
jj |
Quick escape to normal mode |
| Key | Action |
|---|---|
<C-n> |
Clear search highlights |
<Space> |
Start search (/) |
K |
Insert line break |
| Key | Action |
|---|---|
,a |
Toggle bookmarks |
,A |
List all bookmarks |
,s |
Save file |
,t |
Go to symbol/type |
,f |
Format document |
,r |
Open recent files |
,g |
Find in files (grep) |
,c |
Toggle terminal |
,e |
Toggle file explorer |
,d |
Toggle Claude Code/Copilot Chat |
,x |
GitHub Copilot fix suggestion |
,q |
GitHub Copilot explain code |
,b |
Toggle git blame |
,w |
Switch between windows (cycling) |
| Key | Action |
|---|---|
<leader><leader>w |
Hop to word |
<leader><leader>l |
Hop to line |
<leader><leader>c |
Hop to character |
<leader><leader>/ |
Hop to pattern |
| Key | Action |
|---|---|
,tf |
Toggle floating terminal |
,th |
Toggle horizontal terminal |
,tv |
Toggle vertical terminal |
,tg |
Toggle lazygit |
,tn |
Toggle Node.js terminal |
,tp |
Toggle Python terminal |
| Key | Action |
|---|---|
,ha |
Add file to harpoon |
,hh |
Toggle harpoon menu |
,1 to ,4 |
Navigate to harpoon file 1-4 |
- lazy.nvim: Plugin manager
- nvim-treesitter: Syntax highlighting and parsing
- nvim-lspconfig: LSP configuration
- mason.nvim: LSP/tool installer
- nvim-cmp: Autocompletion
- telescope.nvim: Fuzzy finder
- hop.nvim: EasyMotion alternative
- harpoon: Quick file navigation
- nvim-tree: File explorer
- which-key: Key binding helper
- gitsigns.nvim: Git signs in gutter
- vim-fugitive: Git commands
- git-blame.nvim: Git blame functionality
- conform.nvim: Code formatting
- trouble.nvim: Diagnostics and quickfix
- toggleterm.nvim: Terminal management
- vim-bookmarks: Bookmark management
- refactoring.nvim: Code refactoring tools
- copilot.vim: GitHub Copilot
- CopilotChat.nvim: AI chat interface
- claude-code.nvim: Claude integration
- mini.nvim: Collection of useful mini-plugins
- bufferline.nvim: Buffer tabs
- nvim-notify: Enhanced notifications
- tokyonight.nvim: Color scheme
The configuration includes optimized settings for:
- Go: gopls with comprehensive analysis and hints
- TypeScript/JavaScript: ts_ls with full web development support
- Python: pyright for type checking
- Rust: rust-analyzer with clippy integration
- C/C++: clangd with formatting
- Lua: lua_ls optimized for Neovim
- Web: HTML, CSS, JSON language servers
- Shell: bashls for shell scripting
Add plugins to the lazy.setup() call in init.lua:
require('lazy').setup({
-- existing plugins...
-- Your new plugin
{
'author/plugin-name',
config = function()
-- plugin configuration
end,
},
})Key mappings are defined in the "Custom Key Mappings" section of init.lua. Add your own:
vim.keymap.set('n', '<leader>your_key', '<cmd>YourCommand<CR>', { desc = 'Your description' })Modify the servers table in the LSP configuration section to add or configure language servers.
- Run
:Lazyto check plugin status - Use
:Lazy updateto update plugins - Use
:Lazy cleanto remove unused plugins
- Run
:Masonto check installed servers - Use
:LspInfoto see attached language servers - Check
:checkhealthfor general health
- Use
:Lazy profileto check plugin load times - Consider lazy-loading plugins with
eventorftoptions
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This configuration is based on Kickstart.nvim and includes custom enhancements.
For issues or questions:
- Check the Neovim documentation
- Visit the Kickstart.nvim repository
- Open an issue in this repository
Happy coding with Neovim! 🚀