72 lines
2.9 KiB
Markdown
72 lines
2.9 KiB
Markdown
# Neovim Configuration
|
|
|
|
A modern, minimal Neovim configuration built around Neovim's native package management with custom plugin handling.
|
|
|
|
## Features
|
|
|
|
- **Native Package Management**: Uses Neovim's built-in `vim.pack` for plugin management
|
|
- **Custom Plugin System**: Custom `pack.lua` module for simplified plugin configuration
|
|
- **Modern UI**: Catppuccin colorscheme with transparency and custom color overrides
|
|
- **LSP Integration**: Full Language Server Protocol support with Mason for easy installation
|
|
- **Smart Completion**: Blink.cmp for fast, intelligent autocompletion
|
|
- **Efficient Navigation**: Mini.pick for fuzzy finding, Oil.nvim for file management
|
|
- **Syntax Highlighting**: Treesitter with support for multiple languages
|
|
|
|
## Plugin Highlights
|
|
|
|
- **Colorscheme**: Catppuccin (Macchiato flavor) with custom transparency
|
|
- **LSP**: Mason + nvim-lspconfig for language servers
|
|
- **Completion**: Blink.cmp with snippet support
|
|
- **File Management**: Oil.nvim for directory editing
|
|
- **Status Line**: Lualine with clean separators
|
|
- **Development**: Claude Code integration for AI assistance
|
|
|
|
## pack.lua
|
|
|
|
`pack.lua` is a custom plugin management wrapper that bridges the gap between modern plugin managers (like lazy.nvim) and Neovim's native package system. It provides:
|
|
|
|
### Key Features
|
|
- **Lazy.nvim-compatible syntax**: Write plugin specs similar to lazy.nvim
|
|
- **Dependency resolution**: Automatically handles nested plugin dependencies
|
|
- **Auto-setup**: Automatically calls `setup()` functions with provided options
|
|
- **URL flexibility**: Supports various URL formats and naming conventions
|
|
|
|
### Use Case
|
|
Perfect for users who want the simplicity of native Neovim package management without sacrificing the convenience of modern plugin configuration patterns. Instead of manually managing `vim.pack.add()` calls and setup functions, you can define plugins declaratively:
|
|
|
|
```lua
|
|
local plugins = {
|
|
'https://github.com/catppuccin/nvim',
|
|
|
|
{ url = 'https://github.com/echasnovski/mini.pick',
|
|
setup = true },
|
|
|
|
{ url = 'https://github.com/nvim-lualine/lualine.nvim',
|
|
dependencies = { 'https://github.com/nvim-tree/nvim-web-devicons' },
|
|
setup = function()
|
|
require('lualine').setup({ /* config */ })
|
|
end }
|
|
}
|
|
```
|
|
|
|
The module handles the complexity of dependency ordering, plugin loading, and setup calls automatically.
|
|
|
|
## Key Bindings
|
|
|
|
- **Leader**: `<Space>`
|
|
- **File Navigation**: `<leader>ff` (files), `<leader>e` (Oil)
|
|
- **LSP**: `<leader>gd` (hover), `<leader>lf` (format)
|
|
- **Terminal**: `<leader>tt` (new terminal)
|
|
- **Claude Code**: `<leader>cc` (toggle AI assistant)
|
|
|
|
## Configuration Structure
|
|
|
|
```
|
|
lua/
|
|
├── colors.lua # Catppuccin theme configuration
|
|
├── keymap.lua # Key mappings
|
|
├── lsp.lua # LSP and completion setup
|
|
├── options.lua # Vim options and settings
|
|
├── pack.lua # Custom plugin management system
|
|
└── plug.lua # Plugin definitions and setup
|
|
```
|