Skip to content

About

A modern Neovim configuration built with Lua. Optimized for performance, productivity, and customization. This setup includes built-in LSP support, Treesitter syntax highlighting, fuzzy finding with Telescope, and seamless tmux integration for terminal-based workflows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Neovim Configuration with Lua and LSP

A modern, fully-featured Neovim configuration with LSP support, tmux integration, and a beautiful UI.


Table of Contents

πŸ“Έ Screenshots

Alpha Dashboard

Alpha Dashboard Preview
πŸ–ΌοΈ View More Screenshots

Alpha Dashboard 1 Alpha Dashboard 2

Alpha Dashboard 3 Alpha Dashboard 4

Alpha Dashboard 5 Alpha Dashboard 6

Colorschemes

πŸŒ™ One Dark Pro (Default)

One Dark Pro Theme Preview
🎨 View More Colorschemes

🐱 Catppuccin

Catppuccin Theme

🌸 Kanagawa

Kanagawa Theme

πŸ”₯ Monokai Pro

Monokai Pro Theme

🌹 Rose Pine

Rose Pine Theme

✨ Features

  • πŸš€ Fast startup with lazy loading via lazy.nvim
  • πŸ” LSP support with auto-completion, diagnostics, and code actions
  • πŸ“ File explorer with nvim-tree
  • πŸ”­ Fuzzy finder with telescope.nvim
  • 🎨 Multiple colorschemes (One Dark Pro, Catppuccin, Kanagawa, etc.)
  • πŸ”„ Tmux integration for seamless navigation
  • πŸ“Š Status line with git integration
  • 🌳 Treesitter for enhanced syntax highlighting
  • 🎯 Auto-completion with nvim-cmp
  • 🧭 Code outline powered by LSP and Treesitter
  • 🚦 Structured diagnostics with Trouble
  • πŸ’¬ Floating command line and message history with Noice
  • ✨ External formatting with Conform and automatically managed formatter binaries
  • πŸ› οΈ External tools integration with Mason

πŸ“‹ Requirements

Core Requirements

  • Neovim >= 0.12.0 (uses the current Treesitter and native LSP APIs)
  • Git (for plugin management)
  • Node.js (for LSP servers)
  • Python (for LSP servers)

Optional but Recommended

  • tmux (for tmux integration)
  • ripgrep (for telescope live grep functionality)
  • fd (for faster telescope file finding)
  • wget (for Mason package downloads)
  • LazyGit (enables the :LazyGit floating Git UI inside Neovim)

Installation Commands

macOS (Homebrew):

# Core tools
brew install neovim git node python3

# Optional tools
brew install tmux ripgrep fd wget

Ubuntu/Debian:

# Core tools
sudo apt update
sudo apt install neovim git nodejs npm python3 python3-pip

# Optional tools
sudo apt install tmux ripgrep fd-find wget

Arch Linux:

# Core tools
sudo pacman -S neovim git nodejs npm python python-pip

# Optional tools
sudo pacman -S tmux ripgrep fd wget

πŸš€ Installation

  1. Backup your existing configuration (if any):

    mv ~/.config/nvim ~/.config/nvim.backup
  2. Clone this repository:

    git clone https://github.com/CollatzConjecture/neovim-lua ~/neovim-config
  3. Copy the nvim configuration:

    cp -r ~/neovim-config/nvim ~/.config/nvim
  4. Start Neovim:

    nvim

    The configuration will automatically:

    • Install the plugin manager (lazy.nvim)
    • Download and install all plugins
    • Set up LSP servers via Mason

πŸ”§ Tmux Integration Setup

This configuration includes a beautiful oh-my-tmux setup with colorful status bar, powerline separators, and vim integration.

Complete Tmux Setup

  1. Copy both tmux configuration files:

    # Main oh-my-tmux configuration
    cp ~/neovim-config/nvim/tmux.conf ~/.config/tmux/tmux.conf
    
    # Custom local configuration with colorful theme
    cp ~/neovim-config/nvim/tmux.conf.local ~/.config/tmux/tmux.conf.local

    Or if you've already copied the nvim folder:

    mkdir -p ~/.config/tmux
    cp ~/.config/nvim/tmux.conf ~/.config/tmux/tmux.conf
    cp ~/.config/nvim/tmux.conf.local ~/.config/tmux/tmux.conf.local
  2. Reload tmux configuration:

    tmux source-file ~/.config/tmux/tmux.conf

Features

  • 🎨 Colorful status bar with oh-my-tmux theming
  • ⚑ Battery indicator with colorful gradient bar
  • πŸ“‘ Powerline separators with angled shapes
  • πŸš€ Vim integration with vim-tmux-navigator
  • ⌨️ Vi mode keys in copy mode
  • πŸ–±οΈ Mouse support enabled

πŸ“ Cheat Sheet

Looking for key bindings or quick tips? Everything now lives in docs/cheatsheet.md.
That reference also reminds you that pressing g? inside NvimTree opens its built-in help overlay.

🎨 Colorschemes

Available colorschemes:

  • One Dark Pro (default)
  • Catppuccin
  • Kanagawa
  • Monokai Pro
  • Rose Pine

Switch colorschemes by changing the colorscheme value in lua/core/colors.lua. Only the selected theme is loaded at startup.

πŸ”§ Configuration Structure

Repository Structure:
β”œβ”€β”€ img/                    # Documentation images
β”œβ”€β”€ nvim/                   # Neovim configuration folder
β”‚   β”œβ”€β”€ lua/
β”‚   β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”‚   β”œβ”€β”€ autocmds.lua    # Auto-commands
β”‚   β”‚   β”‚   β”œβ”€β”€ colors.lua      # Colorscheme configuration
β”‚   β”‚   β”‚   β”œβ”€β”€ keymaps.lua     # Key mappings
β”‚   β”‚   β”‚   β”œβ”€β”€ lazy.lua        # Plugin manager setup
β”‚   β”‚   β”‚   β”œβ”€β”€ options.lua     # Neovim options
β”‚   β”‚   β”‚   └── statusline.lua  # Status line configuration
β”‚   β”‚   β”œβ”€β”€ lsp/
β”‚   β”‚   β”‚   └── lspconfig.lua   # LSP configuration
β”‚   β”‚   └── plugins/
β”‚   β”‚       β”œβ”€β”€ alpha-nvim.lua  # Dashboard
β”‚   β”‚       β”œβ”€β”€ indent-blankline.lua
β”‚   β”‚       β”œβ”€β”€ conform.lua     # External formatters
β”‚   β”‚       β”œβ”€β”€ nvim-cmp.lua    # Auto-completion
β”‚   β”‚       β”œβ”€β”€ nvim-tree.lua   # File explorer
β”‚   β”‚       β”œβ”€β”€ nvim-treesitter.lua
β”‚   β”‚       β”œβ”€β”€ telescope.lua   # Fuzzy finder
β”‚   β”‚       └── tmux.lua        # Tmux integration
β”‚   β”œβ”€β”€ init.lua            # Entry point
β”‚   └── tmux.conf           # Tmux configuration template
β”œβ”€β”€ .gitignore
β”œβ”€β”€ LICENSE
└── README.md

After Installation (~/.config/nvim/):
β”œβ”€β”€ lua/
β”‚   β”œβ”€β”€ core/              # Core configuration files
β”‚   β”œβ”€β”€ lsp/               # LSP configuration
β”‚   └── plugins/           # Plugin configurations
β”œβ”€β”€ init.lua                # Entry point
└── tmux.conf              # Tmux configuration template

πŸ› οΈ Language Server Setup

The configuration automatically installs LSP servers for:

  • Bash (bashls)
  • Python (pyright)
  • C/C++ (clangd)
  • HTML (html)
  • CSS (cssls)
  • TypeScript/JavaScript (ts_ls)
  • ESLint (eslint)
  • Lua (lua_ls)
  • Svelte (svelte)

Additional servers can be added in lua/lsp/lspconfig.lua.

🎯 Customization

Adding New Plugins

  1. Add plugin specification to ~/.config/nvim/lua/core/lazy.lua
  2. Create configuration file in ~/.config/nvim/lua/plugins/
  3. Add plugin-specific keymaps to the config file

Changing Colorscheme

Edit ~/.config/nvim/lua/core/colors.lua and change:

local colorscheme = 'your-colorscheme'

Adding LSP Servers

Edit ~/.config/nvim/lua/lsp/lspconfig.lua and add to the servers table:

local servers = {
  'bashls',
  'pyright',
  'your-new-server',  -- Add here
}

πŸ› Troubleshooting

Plugin Installation Issues

# Clear plugin cache
rm -rf ~/.local/share/nvim/lazy/
nvim --headless "+Lazy! sync" +qa

LSP Server Issues

# Check Mason installation
:Mason
# Reinstall server
:MasonUninstall server-name
:MasonInstall server-name

Tmux Navigation Not Working

  1. Verify tmux configuration is loaded: tmux source-file ~/.tmux.conf
  2. Check if bc is installed: which bc
  3. Restart tmux session

βœ… Configuration Check

  • Health Check: Open nvim and run :checkhealth to verify everything is working correctly:

    :checkhealth
  • Startup Time: Check nvim startup performance:

    nvim --startuptime startup.log
    nvim startup.log
  • Plugin Status: Check plugins configuration and startup time:

    :checkhealth lazy
    :Lazy profile
  • LSP Status: Open a source file and verify LSP is working:

    :LspInfo

πŸ“š Resources

Plugins

lazy.nvim - A modern plugin manager for Neovim

lualine.nvim - A blazing fast and easy to configure neovim statusline plugin written in pure lua

nvim-lspconfig - A collection of common configurations for Neovim's built-in language server client

mason.nvim - Portable package manager for Neovim that runs everywhere Neovim runs

mason-tool-installer.nvim - Automatically installs configured formatters through Mason

nvim-cmp - A completion plugin for neovim coded in Lua

LuaSnip - Snippet Engine for Neovim written in Lua

telescope.nvim - Find, Filter, Preview, Pick. All lua, all the time

nvim-tree.lua - A file explorer tree for neovim written in lua

nvim-treesitter - Treesitter configurations and abstraction layer for Neovim

indent-blankline.nvim - Indent guides for Neovim

nvim-autopairs - Autopairs for neovim written by lua

mini.surround - Add, delete, and replace surrounding characters

lazydev.nvim - LuaLS support for editing Neovim Lua configurations

conform.nvim - Lightweight external formatter runner

aerial.nvim - LSP and Treesitter-powered code outline

trouble.nvim - Structured diagnostics, references, symbols, and quickfix views

noice.nvim - Floating command line, messages, and notification history

which-key.nvim - Discoverable keybinding hints

gitsigns.nvim - Git integration for buffers lazygit.nvim - Floating LazyGit terminal within Neovim

alpha-nvim - A lua powered greeter like vim-startify / dashboard-nvim

vim-tmux-navigator - Seamless navigation between tmux panes and vim splits

onedarkpro.nvim - One Dark Pro theme and the default colorscheme

catppuccin - Soothing pastel theme for Neovim

nvim-web-devicons - Filetype icons for Neovim

🀝 Contributing

Feel free to submit issues and enhancement requests!


Disclaimer

This setup is based on the KISS principle, probably some concepts may not be valid for everyone. Then feel free to take what you need but don't install anything without checking first!

This setup is not a Framework but it is a configuration that can be used by default as it can be a starting point to understand how Neovim is structured and maybe improve this config. It tries to stay as simple as possible, with each addition weighted along these lines.

Less is more

πŸ™ Thanks

  • brainfucksec for the amazing neovim-lua project that served as inspiration for this configuration
  • folke for the incredible lazy.nvim plugin manager
  • christoomey for vim-tmux-navigator that makes tmux + vim integration seamless
  • All the amazing plugin authors who make Neovim extensible and powerful
  • All contributors who help improve this setup with their reports and advice

πŸ“„ License

This configuration is open source and available under the GPL-3.0 License.

About

A modern Neovim configuration built with Lua. Optimized for performance, productivity, and customization. This setup includes built-in LSP support, Treesitter syntax highlighting, fuzzy finding with Telescope, and seamless tmux integration for terminal-based workflows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages