GitPedia

Nvim

Nvim Config for Full Stack Web Development

From ahmad9059ยทUpdated June 7, 2026ยทView on GitHubยท

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

preview-2-Image
preview-Image


โœจ 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

PluginPurposeStatus
Core & UI
NvChad/NvChadBase configuration frameworkโœ… Active
folke/which-key.nvimKey binding helper with helix presetโœ… Active
LSP & Completion
neovim/nvim-lspconfigLanguage Server Protocol configurationโœ… Active
nvchad.blink.lazyspecFast completion engineโœ… Active
Formatting & Linting
stevearc/conform.nvimCode formatting with Prettier, Styluaโœ… Active
Git Integration
kdheepak/lazygit.nvimLazyGit terminal UI integrationโœ… Active
Navigation & Movement
christoomey/vim-tmux-navigatorSeamless Tmux pane navigationโœ… Active
nvim-telescope/telescope-ui-select.nvimTelescope dropdown for vim.ui.selectโœ… Active
Language-Specific
axelvc/template-string.nvimAuto-convert quotes to template stringsโœ… Active
windwp/nvim-ts-autotagAuto-close and rename HTML/JSX tagsโœ… Active
MeanderingProgrammer/render-markdown.nvimLive markdown renderingโœ… Active
Syntax & Parsing
nvim-treesitter/nvim-treesitterAdvanced syntax highlighting with auto-installโœ… Active
Optional/Commented
github/copilot.vimAI code suggestions๐Ÿ”„ Commented out
folke/noice.nvimEnhanced command line and notification UI๐Ÿ”„ Commented out
rcarriga/nvim-notifyBeautiful 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 pane
  • g1-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

  • 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

  1. Open Neovim - plugins will automatically install
  2. Wait for Lazy.nvim to finish downloading plugins
  3. Restart Neovim for full functionality
  4. Run :checkhealth to 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-navigator plugin 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:

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 }, }, }

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

  1. Fork the repository
  2. Create a feature branch
  3. Test your changes thoroughly
  4. Submit a pull request with clear description

๐Ÿ™Œ Credits & Acknowledgments

Core Dependencies

Key Plugins

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

LinkedIn
GitHub


๐Ÿ“„ 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.

View all contributors on GitHub โ†’

This article is auto-generated from ahmad9059/nvim via the GitHub API.Last fetched: 6/25/2026