Skip to content

Latest commit

 

History

History
279 lines (212 loc) · 9.91 KB

File metadata and controls

279 lines (212 loc) · 9.91 KB

🚀 Personal Neovim Configuration

A modern, feature-rich Neovim configuration built with Lazy.nvim plugin manager. This setup provides a powerful IDE-like experience with excellent performance and beautiful UI.

✨ Features

  • 🎨 Beautiful UI: Catppuccin colorscheme with custom lualine configuration
  • 🔍 Fuzzy Finding: Telescope integration for files, buffers, and live grep
  • 📝 LSP Support: Full Language Server Protocol support with Mason
  • 🤖 AI Assistance: GitHub Copilot integration
  • 🌳 File Explorer: Neo-tree with floating window support
  • 📚 Project Navigation: Harpoon for quick file switching
  • 🔧 Code Formatting: Automatic formatting with Conform
  • 🐛 Debugging & Diagnostics: Trouble integration for better error handling
  • 📖 Git Integration: Comprehensive git support with multiple plugins
  • ⚡ Performance: Optimized for speed with lazy loading

📦 Installation

Prerequisites

  • Neovim >= 0.9.0
  • Git
  • A Nerd Font for icons
  • Node.js (for LSP servers and formatters)
  • Make (for telescope-fzf-native)

Quick Setup

# Backup existing config (if any)
mv ~/.config/nvim ~/.config/nvim.backup

# Clone this configuration
git clone <your-repo-url> ~/.config/nvim

# Start Neovim - plugins will install automatically
nvim

🎯 Key Bindings

General

Key Description
<Space> Leader key
jj Exit insert mode
<D-s> / <Cmd-s> Save file

Window Navigation

Key Description
<C-h> Move to left window
<C-j> Move to down window
<C-k> Move to up window
<C-l> Move to right window

Splits

Key Description
<C-s> Vertical split
<C-s><C-h> Horizontal split

File Explorer

Key Description
<leader>1 Toggle Neo-tree sidebar
<leader>e Toggle Neo-tree float

Telescope (Fuzzy Finder)

Key Description
<leader>sf Find files
<leader>sg Live grep
<leader>sw Search current word
<leader><space> Find buffers
<leader>? Recent files
<leader>/ Search in current buffer

LSP

Key Description
gd Go to definition
gr Go to references
K Show hover information
<leader>ca Code actions
<leader>vrn Rename
<leader>fo Format code
<leader>vh Show diagnostics float

Harpoon

Key Description
<leader>H Add file to harpoon
<leader>h Toggle harpoon menu
<leader>1-9 Jump to harpoon file 1-9

Bookmarks

Key Description
<leader>bc Toggle bookmark
<leader>bl List bookmarks
<leader>bj Jump to bookmark

Buffer Management

Key Description
<Tab> Next buffer
<S-Tab> Previous buffer
<leader>w Pick buffer to close
<C-w> Close other buffers

🔌 Installed Plugins

🎨 UI & Themes

🔍 Navigation & Search

💻 LSP & Completion

🤖 AI & Productivity

🔧 Code Quality & Formatting

🌿 Git Integration

🔗 Terminal & Utilities

📚 Dependencies & Helpers

📁 Configuration Structure

~/.config/nvim/
├── init.lua                 # Main entry point
├── lazy-lock.json          # Plugin version lockfile
├── lua/
│   ├── core/               # Core configuration
│   │   ├── settings.lua    # Vim settings and options
│   │   ├── keybindings.lua # Custom key mappings
│   │   └── lazy.lua        # Lazy.nvim setup
│   └── plugins/            # Plugin configurations
│       ├── autopairs.lua
│       ├── blink.lua
│       ├── bookmarks.lua
│       ├── bufferline.lua
│       ├── colorschema.lua
│       ├── conform.lua
│       ├── copilot.lua
│       ├── dashboard-nvim.lua
│       ├── figitive.lua
│       ├── gc.lua
│       ├── git-blame.lua
│       ├── gitsigns.lua
│       ├── harpoon.lua
│       ├── leap.lua
│       ├── lsp.lua
│       ├── lualine.lua
│       ├── mason.lua
│       ├── neo-tree.lua
│       ├── nvim-lint.lua
│       ├── telescope.lua
│       ├── toggleterm.lua
│       ├── treesitter.lua
│       ├── trouble.lua
│       └── which-key.lua
└── README.md               # This file

⚙️ Customization

Adding New Plugins

Create a new file in lua/plugins/ or add to an existing file:

return {
    {
        "author/plugin-name",
        config = function()
            -- Plugin configuration
        end
    }
}

Modifying Key Bindings

Edit lua/core/keybindings.lua to add or modify key mappings:

local function map(m, k, v)
    vim.keymap.set(m, k, v, { silent = true, noremap = true })
end

map("n", "<your-key>", "<your-command>")

Changing Colorscheme

Edit lua/plugins/colorschema.lua to switch themes or modify the current one.

🐛 Troubleshooting

Common Issues

  1. Icons not displaying: Install a Nerd Font and configure your terminal
  2. LSP not working: Run :Mason to install language servers
  3. Slow startup: Check :Lazy profile for plugin loading times
  4. Key binding conflicts: Check :checkhealth for conflicts

Getting Help

  • Use :checkhealth to diagnose issues
  • Check :Lazy for plugin status
  • Use :WhichKey to see available key bindings
  • Check individual plugin documentation for specific issues

📄 License

This configuration is open source and available under the MIT License.


Enjoy coding with Neovim! 🎉