Nvim
Nvim Config for Full Stack Web Development
Welcome to my personal Neovim configuration, built on top of [NvChad](https://github.com/NvChad/NvChad) for a modern, fast, and minimal Neovim setup tailored for **web development**, **JavaScript/TypeScript**, and general-purpose programming. The project is written primarily in Lua, distributed under the The Unlicense license, first published in 2024. Key topics include: config, dotfiles, lazynvim, lua, mern.
๐ฅ๏ธ Neovim Config (NvChad-Based)
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.
๐ท Screenshots


โจ Key Features
- ๐ 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 Ecosystem
| 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 |
๐ Language Support
Full LSP Support
- 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
Enhanced Features
- 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
Formatting Support
- 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
โ๏ธ Custom Configuration Highlights
Theme & UI
- Tokyo Night theme with transparency enabled
- Custom dashboard with ASCII art header
- Minimal statusline with rounded separators
- Relative line numbers for better navigation
Key Mappings
;โ:(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
Advanced Features
- 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
๐งฐ Prerequisites
Required
- Neovim v0.9+ (v0.10+ recommended)
- Git
- Node.js and
npm(for LSP servers and formatters)
Optional but Recommended
- LazyGit - Git UI integration
- Tmux - Terminal multiplexer for navigation
- Nerd Font - For proper icon display
Language Servers & Formatters
The following LSP servers are configured and can be installed via Mason:
bash# 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
๐ Installation
Method 1: Fresh NvChad Installation
bash# 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
Method 2: VSCode-Neovim Users
This config includes dedicated VSCode compatibility. Simply install the VSCode-Neovim extension and point it to this config.
๐ฏ Usage Guide
First Launch
- Open Neovim - plugins will automatically install
- Wait for Lazy.nvim to finish downloading plugins
- Restart Neovim for full functionality
- Run
:checkhealthto verify everything is working
Key Workflows
Git Integration
<leader>lg- Open LazyGit for visual Git operations- Use LazyGit's intuitive interface for staging, committing, and pushing
Code Formatting
- Automatic - Format on save (500ms timeout)
- Manual - Use LSP formatting commands
- Supported - JS, TS, HTML, CSS, JSON, Markdown, Lua
Terminal Usage
<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
Tmux Integration
<C-h/j/k/l>- Navigate between Neovim and Tmux panes seamlessly<C-\>- Go to previous Tmux pane
๐ง Troubleshooting
Common Issues
LSP not working?
bash# Check if language servers are installed :LspInfo # Install missing servers via Mason :Mason
Formatting not working?
bash# Check formatter availability :ConformInfo # Install formatters manually npm install -g prettier @fsouza/prettierd cargo install stylua npm install -g shfmt
Plugins not loading?
bash# Check plugin status :Lazy # Force plugin sync :Lazy sync
Tmux navigation not working?
- Ensure Tmux is installed and running
- Check if
christoomey/vim-tmux-navigatorplugin is loaded
๐ Project Structure
~/.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
๐จ Customization
Changing Theme
Edit lua/chadrc.lua:
luaM.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 }, }, }
Adding New LSP
Edit lua/configs/lspconfig.lua:
lua-- Example: Python LSP lspconfig.pyright.setup { on_attach = on_attach, capabilities = capabilities, }
Custom Key Mappings
Edit lua/mappings.lua:
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
๐ค Contributing
Feel free to:
- Report bugs or issues
- Suggest new features or improvements
- Submit pull requests
- Share your customizations
Development Setup
- Fork the repository
- Create a feature branch
- Test your changes thoroughly
- Submit a pull request with clear description
๐ Credits & Acknowledgments
Core Dependencies
- NvChad - Amazing Neovim configuration framework
- Lazy.nvim - Modern plugin manager
- Telescope - Fuzzy finder and UI
Key Plugins
- conform.nvim - Formatter integration
- nvim-lspconfig - LSP configuration
- LazyGit - Git terminal UI
- template-string.nvim - Smart template strings
- noice.nvim - Enhanced UI components
Community
- All the amazing open-source contributors
- NvChad community for the solid foundation
- Neovim core team for the incredible editor
๐จโ๐ป Author
Ahmad Hassan
Software Engineer & Full Stack Developer
๐ License
This project is open source and available under the MIT License.
MIT License - Feel free to use, modify, and distribute
โญ Show Your Support
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! ๐
Contributors
Showing top 1 contributor by commit count.
