Skip to content

dredstone1/neovim-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

61 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Neovim Configuration

A modern, feature-rich Neovim configuration built with Lua, designed for efficient development across multiple programming languages.

πŸ“Έ Screenshots

Minimal and simple as well as beautiful theme thanks to moonfly Neovim editor

✨ Features

  • Modern Plugin Management: Uses Lazy.nvim for fast, lazy-loaded plugin management
  • Language Server Protocol (LSP): Full LSP support with automatic server installation via Mason
  • Intelligent Code Completion: Powered by blink.cmp
  • Advanced Syntax Highlighting: Tree-sitter integration with support for 12+ languages
  • Fuzzy Finding: Telescope integration for file searching, live grep, and more
  • Git Integration: GitSigns, Diffview, and Fugitive for comprehensive Git workflow
  • Code Formatting: Conform.nvim with language-specific formatters
  • Tmux Integration: Seamless navigation between Neovim and Tmux panes
  • Enhanced UI: Beautiful statusline with Lualine and moonfly theme

πŸš€ Installation

Prerequisites

  • Neovim >= 0.9.0
  • Git
  • A Nerd Font (for icons)

Optional (Recommended)

  • ripgrep - For faster Telescope live grep functionality
  • Node.js - Required for some LSP servers (will be prompted if needed)

Quick Setup

🐧 Linux/macOS

  1. Clone this configuration:
    git clone https://github.com/dredstone1/neovim-config.git ~/.config/nvim

πŸͺŸ Windows

  1. Clone this configuration:
    # PowerShell/Git Bash
    git clone https://github.com/dredstone1/neovim-config.git ~/AppData/Local/nvim
    
    # Or use full path if above doesn't work
    git clone https://github.com/dredstone1/neovim-config.git "$env:LOCALAPPDATA/nvim"

πŸ”§ Final Steps (All Platforms)

  1. Open nvim:

    nvim
    # nvim . // to open it as a project.
  2. Install plugins: Lazy.nvim will automatically install all plugins on first launch.

Note: On first launch, you'll see plugins downloading - this is normal and only happens once!

πŸ“¦ Plugins

Core Functionality

LSP & Completion

Code Intelligence

Navigation & Search

Git Integration

UI & Visual

Tmux Integration

πŸ› οΈ Language Support

This configuration supports the following languages out of the box:

  • Lua (lua_ls, stylua)
  • Python (pyright, black, isort)
  • JavaScript/TypeScript (prettier, prettierd)
  • HTML/CSS (html, cssls, prettier)
  • C/C++ (clangd, clang-format)
  • Rust (rustfmt)
  • JSON (jsonls, prettier)
  • Markdown (prettier)
  • Java
  • Bash

⌨️ Key Mappings

Leader Key

The leader key is set to <Space>.

File Navigation

  • <leader>ff - Find files
  • <leader>fg - Live grep
  • <leader>fb - Browse buffers
  • <leader>fh - Help tags
  • <leader>fc - Colorscheme picker
  • <leader>e - File explorer, go back in File explorer

LSP

  • K - Hover documentation
  • gd - Go to definition
  • gD - Go to declaration
  • gi - Go to implementation
  • gr - Go to references
  • gt - Go to type definition
  • gn - Rename symbol
  • gO - Document symbols

Git

  • <leader>gs - Git status
  • <leader>gd - Git diff view
  • <leader>hs - Stage hunk
  • <leader>hr - Reset hunk
  • <leader>hS - Stage buffer
  • ]c / [c - Navigate between changes

Code Formatting

  • <F3> - Format current buffer
  • :Format - Format command with range support

Diagnostics & Trouble

  • <leader>xx - Toggle diagnostics
  • <leader>cs - Document symbols
  • <leader>cl - LSP definitions/references

Comments

  • gcc - Toggle line comment
  • gbc - Toggle block comment
  • gc - Comment motion (visual mode)

Window Management

  • <leader>cv - Vertical split
  • <leader>cb - Horizontal split
  • <leader>cc - Close window

Tmux Navigation

  • <C-h> / <C-j> / <C-k> / <C-l> - Navigate panes
  • <A-h> / <A-j> / <A-k> / <A-l> - Resize panes

βš™οΈ Configuration Structure

.
β”œβ”€β”€ init.lua                    # Entry point
β”œβ”€β”€ lua/
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ init.lua           # Config loader
β”‚   β”‚   β”œβ”€β”€ settings.lua       # Vim settings
β”‚   β”‚   β”œβ”€β”€ keymap.lua         # Key mappings
β”‚   β”‚   β”œβ”€β”€ lazy.lua           # Plugin manager setup
β”‚   β”‚   └── diagnostic.lua     # Diagnostic configuration
β”‚   β”œβ”€β”€ plugins/               # Plugin configurations
β”‚   β”‚   β”œβ”€β”€ init.lua          # Core plugins
β”‚   β”‚   β”œβ”€β”€ lsp-config.lua    # LSP setup
β”‚   β”‚   β”œβ”€β”€ telescope.lua     # Fuzzy finder
β”‚   β”‚   β”œβ”€β”€ treesitter.lua    # Syntax highlighting
β”‚   β”‚   β”œβ”€β”€ conform.lua       # Code formatting
β”‚   β”‚   β”œβ”€β”€ lualine.lua       # Statusline
β”‚   β”‚   β”œβ”€β”€ gitsigns.lua      # Git integration
β”‚   β”‚   β”œβ”€β”€ trouble.lua       # Diagnostics
β”‚   β”‚   β”œβ”€β”€ tmux.lua          # Tmux integration
β”‚   β”‚   └── ...              # Other plugins

🎨 Customization

Adding New Languages

  1. Add the Treesitter parser in lua/plugins/treesitter.lua:

    ensure_installed = {
        -- existing languages...
        "your_language",
    }
  2. Add LSP server in lua/plugins/lsp-config.lua:

    local servers = {
        -- existing servers...
        your_language_ls = {},
    }
  3. Add formatter in lua/plugins/conform.lua:

    formatters_by_ft = {
        -- existing formatters...
        your_language = { "your_formatter" },
    }

Modifying Settings

All Vim settings are in lua/config/settings.lua. Key configurations include:

  • Tab width: 4 spaces
  • Relative line numbers enabled
  • Persistent undo enabled
  • No swap files
  • Scroll offset: 8 lines

🀝 Contributing

Feel free to fork this repository and customize it to your needs. If you have suggestions for improvements, please open an issue or submit a pull request.

πŸ“„ License

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


Happy coding! πŸŽ‰

About

this is my personal neovim configuration folder

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages