A modern Neovim configuration focused on TypeScript and React development with extensive LSP support and carefully selected plugins.
This repo is also pulled into my dotfiles as the nvim submodule.
- Features
- Prerequisites
- Installation
- Key Bindings
- Plugin Categories
- Language Support
- Customization
- Troubleshooting
- Full LSP Support - Intelligent code completion, diagnostics, and navigation
- TypeScript & React - First-class support with dedicated tooling
- Fast File Navigation - Telescope fuzzy finder with ripgrep integration
- Git Integration - Fugitive, Gitsigns, and Lazygit for complete git workflow
- Modern UI - Aether theme with custom dashboard and statusline
- Smart Code Editing - Treesitter syntax highlighting and text objects
- Debugging Support - DAP integration for debugging applications
- Neovim >= 0.11.0
- Git
- Node.js & npm
- ripgrep (
rg) - Required for Telescope live grep - fd - For better file finding performance
- tree-sitter CLI - Required by nvim-treesitter (
mainbranch) to compile parsers - TypeScript 5.x - Provides the
tsserverthat typescript-tools.nvim needs when a project has no local copy - A Nerd Font - For icons and symbols
Note: the
tree-sitterCLI is not optional. Without it every parser build fails while the installer still reportsInstalled N/N languages, leaving you on regex syntax highlighting with no visible error.
Note: TypeScript 7 dropped
lib/tsserver.js, so typescript-tools.nvim cannot use it. Pin the global install to 5.x (projects with a localtypescriptinnode_modulesare unaffected).
sudo pacman -S neovim ripgrep fd nodejs npm tree-sitter-cli
npm install -g typescript@5- Backup your existing Neovim configuration:
mv ~/.config/nvim ~/.config/nvim.bak- Clone this repository:
git clone https://github.com/ProdigyRahul/dotvim.git ~/.config/nvim- Start Neovim and let Lazy.nvim install plugins:
nvim- Install LSP servers:
:Mason| Key | Description | Mode |
|---|---|---|
<Space> |
Leader key | Normal |
<C-p> |
Find files (respects .gitignore) |
Normal |
<leader>ff |
Find files (respects .gitignore) |
Normal |
<leader>fF |
Find files including ignored files | Normal |
<leader>fg |
Live grep | Normal |
<leader>fb |
Browse buffers | Normal |
<C-n> |
Toggle file tree | Normal |
| Key | Description | Mode |
|---|---|---|
<C-h/j/k/l> |
Navigate windows | Normal |
<leader>hh |
Harpoon menu | Normal |
<leader>ha |
Add to Harpoon | Normal |
<leader>1..5 |
Harpoon file slots | Normal |
s |
Flash jump | Normal |
S |
Flash treesitter | Normal |
| Key | Description | Mode |
|---|---|---|
gd |
Go to definition | Normal |
gr |
Find references | Normal |
K |
Hover documentation | Normal |
<leader>ca |
Code actions | Normal |
<leader>rn |
Rename symbol | Normal |
<leader>f |
Format buffer | Normal |
| Key | Description | Mode |
|---|---|---|
<leader>gs |
Git status | Normal |
<leader>gp |
Git push | Normal |
<leader>gP |
Git pull | Normal |
<leader>gl |
Git log | Normal |
<leader>gg |
Lazygit | Normal |
- lazy.nvim - Modern plugin manager
- plenary.nvim - Lua utility functions
- nvim-web-devicons - File icons
- nvim-treesitter - Advanced syntax highlighting
- nvim-autopairs - Auto close brackets
- Comment.nvim - Smart commenting
- nvim-surround - Surround text objects
- flash.nvim - Enhanced motions
- telescope.nvim - Fuzzy finder
- neo-tree.nvim - File explorer
- harpoon - Quick file navigation
- nvim-lspconfig - LSP configuration
- mason.nvim - LSP server installer
- nvim-cmp - Completion engine
- typescript-tools.nvim - TypeScript utilities
- tailwind-tools.nvim - Tailwind CSS support
- vim-fugitive - Git commands
- gitsigns.nvim - Git decorations
- lazygit.nvim - Lazygit integration
- aether.nvim - Color scheme
- alpha-nvim - Dashboard
- lualine.nvim - Status line
- noice.nvim - UI enhancements
Note:
bufferline.nvimandcatppuccinare present but currently disabled in this config.
- nvim-dap - Debug Adapter Protocol
- conform.nvim - Code formatting
- nvim-lint - Linting
- todo-comments.nvim - Highlight TODOs
- trouble.nvim - Diagnostics list
Alpha dashboard with quick actions
TypeScript development with LSP
- Full LSP support with typescript-tools.nvim
- ESLint and Prettier integration
- React/JSX support
- Intelligent completions
- Color previews
- Class sorting
Note:
tailwind-tools.nvimis currently disabled until it updates for Neovim 0.11.
- HTML/CSS
- JSON
- Markdown
- Lua
- YAML
Edit lua/plugins/ directory to add new plugin configurations:
-- lua/plugins/your-plugin.lua
return {
"author/plugin-name",
config = function()
-- Plugin configuration
end
}Core settings are in lua/vim-settings.lua. Adjust options like:
- Tab width
- Theme
- Keybindings
- UI preferences
LSP servers are configured in lua/plugins/lsp-config.lua. Add new servers through Mason or modify existing configurations.
Ensure ripgrep and fd are installed:
which rg fdInstall a Nerd Font and configure your terminal to use it.
- Check Mason for installed servers:
:Mason - Verify Node.js is installed:
node --version - Check LSP status:
:LspInfo
typescript-tools.nvim needs typescript/lib/tsserver.js, which TypeScript 7 no
longer ships. Install a 5.x global: npm install -g typescript@5.
Verify the parsers actually built - the installer reports success even when every build fails:
which tree-sitter # must exist; install tree-sitter-cli if not
ls ~/.local/share/nvim/site/parser # should list <lang>.so filesIf the directory is empty, install the CLI and re-run :TSInstall <lang>.
This configuration is optimized for performance:
- Lazy loading of plugins
- Minimal startup time
- Efficient keybindings
- Smart caching
Feel free to fork and customize. Pull requests for improvements are welcome.
MIT License - See LICENSE file for details
Built with inspiration from the Neovim community and various dotfile repositories.
For questions or issues, please open an issue on GitHub
