Skip to content

vishvanatarajan/nvim-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ My Neovim Configuration

A personalized Neovim setup focused on speed, low plugin dependencies, and a clean cross-platform workflow.

✨ Features

  • Plugin Manager: Uses Neovim built-in vim.pack (Neovim 0.12+) for plugin installation and updates.
  • LSP: LSP support using built-in vim.lsp.enable() and per-server vim.lsp.config().
  • Telescope: Fuzzy finding for files, buffers, and grep.
  • UI: Clean aesthetics with a lightweight built-in statusline.

🛠️ Installation

To use this configuration, ensure you have Neovim 0.12+ installed.

  1. Backup your current config:

    mv ~/.config/nvim ~/.config/nvim.bak
    mv ~/.local/share/nvim ~/.local/share/nvim.bak
  2. Clone this repository:

    git clone https://github.com/vishvanatarajan/nvim-config.git ~/.config/nvim
  3. Launch:

    nvim

On first run, Neovim may prompt to install missing plugins via vim.pack.

Updating plugins

From inside Neovim:

:lua vim.pack.update()

This opens a confirmation buffer. Write (:write) to confirm or quit (:quit) to cancel.

📦 Requirements

To ensure all features (like fuzzy finding and language tooling) work correctly, please install the following on your local machine:

  • Git: Required by vim.pack for installing/updating plugins.
  • fd: Required for Telescope's file finding functionality.
  • Ripgrep (rg): Required for Telescope's live grep functionality.
  • Nerd Fonts (optional): Recommended for file icons (e.g., JetBrainsMono Nerd Font).
  • Node.js & npm (optional): Required for some language servers (e.g., Tailwind, VTSLS).

Note: A C compiler is not required for this configuration

🖱️ System Clipboard Integration (Linux & WSL)

This config expects a working system clipboard so operations like "+y / "+p interoperate with your OS. Neovim relies on an external provider—install the one appropriate to your environment:

Linux — Wayland sessions

Install wl-clipboard (provides wl-copy / wl-paste):

# Ubuntu/Debian
sudo apt update && sudo apt install wl-clipboard
# Fedora/RHEL
sudo dnf install wl-clipboard
# Arch/Manjaro
sudo pacman -S wl-clipboard

Linux — X11 sessions

Install xclip or xsel (either is fine):

# Ubuntu/Debian
sudo apt update && sudo apt install xclip xsel
# Fedora/RHEL
sudo dnf install xclip xsel
# Arch/Manjaro
sudo pacman -S xclip xsel

🪟 WSL 2 on Windows — win32yank.exe (recommended)

On WSL 2, the most reliable provider is win32yank.exe, which bridges Neovim to the Windows clipboard. You can obtain it in either of these ways:

  1. Via Neovim for Windows (bundled): Installing Neovim on Windows places win32yank.exe in C:\\Program Files\\Neovim\\bin.

  2. Standalone download: Download the latest win32yank.exe from the official releases and place it on your Windows system.

WSL interop requirement

To execute Windows binaries (including win32yank.exe) from WSL, enable interop in /etc/wsl.conf and then restart WSL:

# /etc/wsl.conf
[interop]
enabled = true
# You can keep PATH clean if you prefer:
appendWindowsPath = false

Apply changes from Windows PowerShell:

wsl --shutdown

Expose win32yank.exe to WSL (keep Windows PATH clean)

If you keep appendWindowsPath=false, create a symlink so WSL can execute win32yank.exe without re‑adding the full Windows PATH:

# In WSL (Ubuntu)
mkdir -p ~/.local/bin

# Adjust the Windows path if needed;
the example below uses Neovim for Windows' default install location:
ln -sf "/mnt/c/Program Files/Neovim/bin/win32yank.exe" ~/.local/bin/win32yank.exe

# Ensure ~/.local/bin is on your PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Verify in Neovim:

  • Run :checkhealth — the Clipboard section should list win32yank as the provider.
  • Try "+yy in Neovim, then paste into a Windows app (e.g., Notepad) to confirm.

🧠 LSP (Language Server Protocol)

This configuration utilizes Neovim's native LSP client via vim.lsp.enable() for a lightweight and high-performance development experience. Further, the LSP configurations are located in the lsp/ folder in the current configuration structure. Any LSP specific configuration must be added there.

All LSPs are disabled by default and can be enabled by uncommenting the lsp.lua file in this configuration setup.

Manual Installation Required: This config does not automatically install LSP binaries. You must have the relevant Language Servers installed on your local machine's $PATH for them to be detected.

How to add a new language:

  1. Install the server via your package manager (e.g., brew install basedpyright or npm install -g @vtsls/language-server).
  2. Add the server name to the vim.lsp.enable({ ... }) list in lua/config/lsp.lua.
  3. (Optional) Add a server config file under lsp/<server>.lua and register it with vim.lsp.config().

About

My Neovim configuration for development

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages