A personalized Neovim setup focused on speed, low plugin dependencies, and a clean cross-platform workflow.
- 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-servervim.lsp.config(). - Telescope: Fuzzy finding for files, buffers, and grep.
- UI: Clean aesthetics with a lightweight built-in statusline.
To use this configuration, ensure you have Neovim 0.12+ installed.
-
Backup your current config:
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
-
Clone this repository:
git clone https://github.com/vishvanatarajan/nvim-config.git ~/.config/nvim -
Launch:
nvim
On first run, Neovim may prompt to install missing plugins via vim.pack.
From inside Neovim:
:lua vim.pack.update()This opens a confirmation buffer.
Write (:write) to confirm or quit (:quit) to cancel.
To ensure all features (like fuzzy finding and language tooling) work correctly, please install the following on your local machine:
- Git: Required by
vim.packfor 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
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:
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-clipboardInstall 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 xselOn 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:
-
Via Neovim for Windows (bundled): Installing Neovim on Windows places
win32yank.exeinC:\\Program Files\\Neovim\\bin. -
Standalone download: Download the latest
win32yank.exefrom the official releases and place it on your Windows system.
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 = falseApply changes from Windows PowerShell:
wsl --shutdownIf 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 ~/.bashrcVerify in Neovim:
- Run
:checkhealth— the Clipboard section should list win32yank as the provider. - Try
"+yyin Neovim, then paste into a Windows app (e.g., Notepad) to confirm.
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
$PATHfor them to be detected.
- Install the server via your package manager
(e.g.,
brew install basedpyrightornpm install -g @vtsls/language-server). - Add the server name to the
vim.lsp.enable({ ... })list inlua/config/lsp.lua. - (Optional) Add a server config file under
lsp/<server>.luaand register it withvim.lsp.config().