Skip to content

arekko/nvimconfig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ 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! πŸŽ‰

About

Personal neovim bundle

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages