Welcome to my personal Neovim configuration, built on top of NvChad for a modern, fast, and minimal Neovim setup tailored for web development, JavaScript/TypeScript, and general-purpose programming.
β‘ Designed for speed, productivity, and ease of maintenance with VSCode compatibility.
- π Lazy-loaded plugin architecture via NvChad v2.5
- π¨ Tokyo Night theme with transparency and custom dashboard
- π§ Intelligent code formatting with Prettier, Stylua, and format-on-save
- π§ Comprehensive LSP support for modern web development
- π§΅ Template string auto-conversion (VS Code-like behavior)
- π·οΈ Auto HTML/JSX tag closing and renaming
- π Enhanced Telescope UI with dropdown selections
- π§βπ§ LazyGit integration for seamless Git workflow
- π₯οΈ Tmux navigation support for terminal multiplexing
- π Markdown rendering with live preview
- π¨βπ» VSCode-Neovim compatibility with dedicated config
- β¨οΈ Custom key mappings for productivity
- οΏ½οΏ½οΏ½ BlVink completion engine for fast autocompletion
- π² Enhanced Treesitter with auto-install for syntax highlighting
Plugin | Purpose | Status |
---|---|---|
Core & UI | ||
NvChad/NvChad |
Base configuration framework | β Active |
folke/which-key.nvim |
Key binding helper with helix preset | β Active |
LSP & Completion | ||
neovim/nvim-lspconfig |
Language Server Protocol configuration | β Active |
nvchad.blink.lazyspec |
Fast completion engine | β Active |
Formatting & Linting | ||
stevearc/conform.nvim |
Code formatting with Prettier, Stylua | β Active |
Git Integration | ||
kdheepak/lazygit.nvim |
LazyGit terminal UI integration | β Active |
Navigation & Movement | ||
christoomey/vim-tmux-navigator |
Seamless Tmux pane navigation | β Active |
nvim-telescope/telescope-ui-select.nvim |
Telescope dropdown for vim.ui.select | β Active |
Language-Specific | ||
axelvc/template-string.nvim |
Auto-convert quotes to template strings | β Active |
windwp/nvim-ts-autotag |
Auto-close and rename HTML/JSX tags | β Active |
MeanderingProgrammer/render-markdown.nvim |
Live markdown rendering | β Active |
Syntax & Parsing | ||
nvim-treesitter/nvim-treesitter |
Advanced syntax highlighting with auto-install | β Active |
Optional/Commented | ||
github/copilot.vim |
AI code suggestions | π Commented out |
folke/noice.nvim |
Enhanced command line and notification UI | π Commented out |
rcarriga/nvim-notify |
Beautiful notification system | π Commented out |
- JavaScript/TypeScript - Complete IntelliSense, auto-imports, refactoring (ts_ls)
- React (JSX/TSX) - Component intelligence, prop validation
- HTML/CSS - Tag completion, CSS properties, validation
- JSON - Schema validation, formatting
- Lua - Neovim API awareness, diagnostics with vim globals
- Markdown - Live rendering with Marksman LSP
- TailwindCSS - Class completion and validation
- Bash/Shell - Script validation and completion
- Emmet - Abbreviation expansion for web technologies
- TailwindCSS - Class completion and validation
- Emmet - Fast HTML/CSS abbreviation expansion for HTML, CSS, JS/TS React
- Template Strings - Auto-conversion for JS/TS/React/Vue/Svelte/Python/C#
- Auto-tagging - Smart HTML/JSX tag management with Treesitter
- Bash/Shell - LSP support for shell scripting
- Markdown - Enhanced support with Marksman LSP and live rendering
- Prettier/Prettierd - JavaScript, TypeScript, HTML, CSS, JSON, Markdown, YAML
- Stylua - Lua code formatting
- Shfmt - Shell script formatting
- Format on Save - Automatic formatting with 500ms timeout and LSP fallback
- Tokyo Night theme with transparency enabled
- Custom dashboard with ASCII art header
- Minimal statusline with rounded separators
- Relative line numbers for better navigation
;
β:
(Quick command mode access)jk
β<ESC>
(Fast insert mode exit)<C-s>
β Save file (works in all modes)<C-a>
β Select all text<A-hjkl>
β Navigate in insert mode<leader>lg
β Open LazyGit<A-i>
β Toggle floating terminal with custom styling<C-hjkl>
β Tmux navigation<C-\>
β Go to previous Tmux paneg1-g9
β Switch between buffers (g0 for last buffer)- Visual mode selections:
<leader>i{
,<leader>a{
, etc. for brackets/quotes
- VSCode compatibility - Dedicated minimal config for VSCode-Neovim extension
- Floating terminal - Customized with rounded borders (80% width/height)
- Smart diagnostics - Virtual text enabled globally
- Auto-formatting - Format on save with 500ms timeout and LSP fallback
- Template strings - Auto-convert quotes to backticks in JS/TS/React
- Blink completion - Fast completion engine integrated with NvChad
- Relative line numbers - Enhanced navigation experience
- Buffer switching - Quick buffer navigation with g1-g9 keys
- Neovim v0.9+ (v0.10+ recommended)
- Git
- Node.js and
npm
(for LSP servers and formatters)
- LazyGit - Git UI integration
- Tmux - Terminal multiplexer for navigation
- Nerd Font - For proper icon display
The following LSP servers are configured and can be installed via Mason:
# LSP Servers (install via :Mason or manually)
npm install -g typescript-language-server # JavaScript/TypeScript
npm install -g vscode-langservers-extracted # HTML, CSS, JSON
npm install -g @tailwindcss/language-server # TailwindCSS
npm install -g emmet-ls # Emmet abbreviations
npm install -g bash-language-server # Bash/Shell
npm install -g marksman # Markdown
# Formatters (for conform.nvim)
npm install -g prettier # JS/TS/HTML/CSS/JSON/MD/YAML
npm install -g @fsouza/prettierd # Faster Prettier daemon
cargo install stylua # Lua formatting
npm install -g shfmt # Shell script formatting
# Backup existing config (if any)
mv ~/.config/nvim ~/.config/nvim.backup
# Clone this config
git clone https://github.com/ahmad9059/nvim ~/.config/nvim
# Start Neovim (plugins will auto-install)
nvim
# Install LSP servers and formatters
:Mason
# Then install the servers you need, or run:
:MasonInstallAll
# Sync plugins if needed
:Lazy sync
This config includes dedicated VSCode compatibility. Simply install the VSCode-Neovim extension and point it to this config.
- Open Neovim - plugins will automatically install
- Wait for Lazy.nvim to finish downloading plugins
- Restart Neovim for full functionality
- Run
:checkhealth
to verify everything is working
<leader>lg
- Open LazyGit for visual Git operations- Use LazyGit's intuitive interface for staging, committing, and pushing
- Automatic - Format on save (500ms timeout)
- Manual - Use LSP formatting commands
- Supported - JS, TS, HTML, CSS, JSON, Markdown, Lua
<A-i>
- Toggle floating terminal with custom styling- Terminal opens with 80% width, 70% height, rounded borders
- Positioned at 10% from top, 8% from left for optimal viewing
<C-h/j/k/l>
- Navigate between Neovim and Tmux panes seamlessly<C-\>
- Go to previous Tmux pane
LSP not working?
# Check if language servers are installed
:LspInfo
# Install missing servers via Mason
:Mason
Formatting not working?
# Check formatter availability
:ConformInfo
# Install formatters manually
npm install -g prettier @fsouza/prettierd
cargo install stylua
npm install -g shfmt
Plugins not loading?
# Check plugin status
:Lazy
# Force plugin sync
:Lazy sync
Tmux navigation not working?
- Ensure Tmux is installed and running
- Check if
christoomey/vim-tmux-navigator
plugin is loaded
~/.config/nvim/
βββ init.lua # Main entry point with VSCode compatibility
βββ lazy-lock.json # Plugin version lock file
βββ .stylua.toml # Stylua formatter configuration
βββ lua/
β βββ autocmds.lua # Auto commands
β βββ chadrc.lua # NvChad theme and UI configuration
β βββ mappings.lua # Custom key mappings
β βββ options.lua # Neovim options (relative numbers, etc.)
β βββ configs/
β β βββ conform.lua # Formatter configuration (Prettier, Stylua, etc.)
β β βββ lazy.lua # Lazy.nvim setup
β β βββ lspconfig.lua # LSP server configurations
β βββ plugins/
β βββ init.lua # Plugin specifications
βββ preview/
βββ preview.png # Screenshot 1
βββ preview-2.png # Screenshot 2
Edit lua/chadrc.lua
:
M.base46 = {
theme = "tokyonight", -- Current theme (change to your preferred theme)
transparency = true, -- Current setting (set to false to disable)
hl_override = {
Comment = { italic = true },
["@comment"] = { italic = true },
},
}
Edit lua/configs/lspconfig.lua
:
-- Example: Python LSP
lspconfig.pyright.setup {
on_attach = on_attach,
capabilities = capabilities,
}
Edit lua/mappings.lua
:
-- Example: Add your custom mappings
map("n", "<leader>custom", "<cmd>YourCommand<CR>", { desc = "Your description" })
-- Current custom mappings include:
-- Buffer navigation with g + numbers
-- Visual mode selections for brackets/quotes
-- Tmux navigation integration
-- Custom terminal toggle with styling
Feel free to:
- Report bugs or issues
- Suggest new features or improvements
- Submit pull requests
- Share your customizations
- Fork the repository
- Create a feature branch
- Test your changes thoroughly
- Submit a pull request with clear description
- NvChad - Amazing Neovim configuration framework
- Lazy.nvim - Modern plugin manager
- Telescope - Fuzzy finder and UI
- conform.nvim - Formatter integration
- nvim-lspconfig - LSP configuration
- LazyGit - Git terminal UI
- template-string.nvim - Smart template strings
- noice.nvim - Enhanced UI components
- All the amazing open-source contributors
- NvChad community for the solid foundation
- Neovim core team for the incredible editor
Ahmad Hassan
Full Stack Developer & Neovim Enthusiast
This project is open source and available under the MIT License.
MIT License - Feel free to use, modify, and distribute
If this configuration helped you, please consider:
- β Starring the repository
- π΄ Forking for your own customizations
- π’ Sharing with fellow developers
- π Reporting issues or suggesting improvements
Happy coding with Neovim! π