A powerful, feature-rich Neovim configuration tailored for modern development
- π¨ Beautiful UI with transparent OneDark Pro theme
- π Fuzzy Finding with Telescope and custom grep functionality
- π€ AI-Powered Development with GitHub Copilot, Avante, and Claude Code
- π³ Syntax Highlighting with Treesitter
- π§ LSP Integration with auto-completion and diagnostics
- π File Management with Neo-tree (file explorer)
- π Custom Status Line with beautiful icons and information
- β‘ Fast Performance with lazy loading
- π― Rails Development optimized with specific keymaps
- Neovim >= 0.8
- Git
- Node.js (for LSP servers)
- Ruby (for Rails development)
- Ripgrep (for fast searching)
# Backup existing config (optional)
mv ~/.config/nvim ~/.config/nvim.backup
# Clone this configuration
git clone https://github.com/galulex/nvim.git ~/.config/nvim
# Start Neovim - plugins will auto-install
nvim-
Install Neovim:
# macOS brew install neovim # Ubuntu/Debian sudo apt install neovim # Arch Linux sudo pacman -S neovim
-
Install dependencies:
# Install ripgrep for fast searching brew install ripgrep chafa ctags fd typos-lsp # macOS sudo apt install ripgrep chafa ctags fd-find # Ubuntu # Install Node.js for LSP servers brew install node # macOS curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs # Ubuntu
-
Copy configuration:
cp -r . ~/.config/nvim/
-
Launch Neovim:
nvim
- onedarkpro.nvim - Beautiful dark theme with transparency
- lualine.nvim - Customizable statusline with icons
- noice.nvim - Enhanced UI for messages and cmdline
- dressing.nvim - Better default vim.ui interfaces
- telescope.nvim - Fuzzy finder with custom grep
- neo-tree.nvim - File explorer (disabled by default)
- satellite.nvim - Decorations for scrollbar
- copilot.lua - GitHub Copilot integration
- avante.nvim - AI-powered coding assistant (disabled)
- claude-code.nvim - Claude Code integration
- nvim-cmp - Completion engine with multiple sources
- nvim-treesitter - Syntax highlighting and parsing
- nvim-lspconfig - LSP configuration
- mason.nvim - Package manager for LSP servers
- gitsigns.nvim - Git integration
- lazygit.nvim - LazyGit integration
- neogit - Git interface for Neovim
- comment.nvim - Smart commenting
- nvim-autopairs - Auto-close pairs
- nvim-surround - Surround text objects
| Key | Mode | Action |
|---|---|---|
<leader> |
Space (leader key) | |
<D-s> |
Normal/Insert | Save file |
<D-a> |
Normal/Insert | Select all |
<D-c> |
Normal | Copy to clipboard |
<D-v> |
Normal/Insert/Command | Paste from clipboard |
<D-z> |
Normal/Insert | Undo |
<D-/> |
Normal/Visual | Toggle comment |
| Key | Mode | Action |
|---|---|---|
<D-o> |
Normal | Open file (Telescope) |
<C-p> |
Normal | Open file (Telescope) |
<S-Tab> |
Normal | Recent files |
<D-S-o> |
Normal | LSP references |
<D-f> |
Normal/Visual | Find text (grep) |
| Key | Mode | Action |
|---|---|---|
<D-t> |
Normal | New tab |
<D-[> / <D-Up> |
Normal/Insert | Previous tab |
<D-]> / <D-Down> |
Normal/Insert | Next tab |
<D-w> |
Normal/Insert | Close tab |
<S-w> |
Normal | Open directory of current file |
| Key | Mode | Action |
|---|---|---|
< / > |
Visual | Indent/outdent (keeps selection) |
<C-Up> / <C-Down> |
Normal/Visual | Move lines up/down |
<M-Right> / <M-Left> |
Normal/Visual/Insert | Move by word |
| Key | Mode | Action |
|---|---|---|
gV |
Normal | Go to view |
gC |
Normal | Go to controller |
gM |
Normal | Go to model |
gH |
Normal | Go to helper |
gJ |
Normal | Go to JavaScript |
gS |
Normal | Go to stylesheet |
| Key | Mode | Action |
|---|---|---|
<D-=> |
Normal | Zoom in |
<D--> |
Normal | Zoom out |
<D-0> |
Normal | Reset zoom |
~/.config/nvim/
βββ init.lua # Entry point
βββ lua/
β βββ config/
β β βββ keymaps.lua # Key mappings
β β βββ lazy.lua # Plugin manager setup
β β βββ settings.lua # Vim settings
β β βββ tabline.lua # Custom tabline
β βββ plugins/
β βββ autopairs.lua # Auto-close pairs
β βββ avante.lua # AI assistant (disabled)
β βββ claude_code.lua # Claude Code integration
β βββ cmp.lua # Completion engine
β βββ colorscheme.lua # Theme configuration
β βββ copilot.lua # GitHub Copilot
β βββ gitsigns.lua # Git integration
β βββ lazygit.lua # LazyGit integration
β βββ lspconfig.lua # LSP configuration
β βββ lualine.lua # Status line
β βββ mason.lua # LSP package manager
β βββ neotree.lua # File explorer
β βββ noice.lua # UI enhancements
β βββ rails.lua # Rails support
β βββ telescope.lua # Fuzzy finder
β βββ treesitter.lua # Syntax highlighting
β βββ ...
βββ lazy-lock.json # Plugin lock file
- Color Scheme: OneDark Pro with transparency
- Font: Supports any Nerd Font for icons
- Transparency: Enabled for modern look
- Status Line: Custom with file progress, git status, and time
- Icons: Extensive use of Nerd Font icons throughout
- Telescope: Fuzzy finding with custom grep functionality
- File Ignore: Automatically ignores common build/cache directories
- Custom Grep:
GrepCwordcommand for searching current word - Visual Search: Select text and press
<D-f>to search
- Tab: Accept suggestion
- M-] / M-[: Next/previous suggestion
- Integrated with completion engine
- Vertical split terminal integration
- 40% screen width allocation
- Advanced AI assistant capabilities
- Can be enabled by setting
enabled = trueinavante.lua
Optimized for Ruby on Rails development with:
- LSP: Ruby LSP and Solargraph support
- Auto-format: Ruby files on save
- Quick Navigation: Rails-specific keymaps (gV, gC, gM, etc.)
- Slim Templates: Syntax highlighting and support
-
Create a new file in
lua/plugins/:-- lua/plugins/my-plugin.lua return { "username/plugin-name", config = function() -- plugin configuration end }
-
Restart Neovim - Lazy.nvim will auto-install
Edit lua/plugins/colorscheme.lua:
return {
"your-theme/nvim",
config = function()
vim.cmd("colorscheme your-theme")
end
}Add to lua/config/keymaps.lua:
vim.keymap.set("n", "<your-key>", "<your-command>")# Remove plugin cache
rm -rf ~/.local/share/nvim/lazy/
# Restart Neovim
nvim# Check LSP servers
:Mason
# Install required servers: ruby-lsp, solargraph, etc.# Check startup time
nvim --startuptime startup.log
# Disable heavy plugins temporarily
# Edit respective plugin files and set enabled = falseFeel free to submit issues and enhancement requests!
This configuration is open source and available under the MIT License.
Happy coding! π