Skip to content

mukor/nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NvChad Neovim Configuration

Personal Neovim configuration built on NvChad v2.5 with comprehensive support for Python, JavaScript/TypeScript, and modern web development.

Features

Language Support

  • Python: Pyright, mypy, ruff, black, debugpy
  • JavaScript/TypeScript: TypeScript tools, ESLint, Prettier
  • Web: HTML, CSS, Tailwind CSS with IntelliSense
  • Auto-close & rename HTML/JSX tags

Development Tools

  • LSP: Full language server support with auto-completion
  • Debugging: DAP integration with VS Code-style keybindings (F5-F12)
  • Git: LazyGit integration
  • AI: Claude Code assistant (Space c c)
  • Formatting: Auto-format on save with black, prettier, eslint
  • Linting: mypy, ruff, eslint_d
  • Note-taking: Telekasten with calendar integration (Space z)
  • Remote editing: Edit files on remote servers via SSHFS (Space r c)

UI Enhancements

  • Rainbow delimiters: Color-coded brackets/parentheses
  • Treesitter: Advanced syntax highlighting and text objects
  • Tmux integration: Seamless pane navigation
  • 11 themes available via NvChad

Prerequisites

  • Neovim 0.11+
  • Lazygit (for git integration)
  • Node.js (for JS/TS language servers) - https://nodejs.org/en/download
  • Go (for some tools)
  • Python virtual environment with project dependencies
  • sshfs (for remote file editing) - sudo apt install sshfs

Installation

  1. Clone this repository to your Neovim config directory:
git clone https://github.com/mukor/nvim.git ~/.config/nvim
  1. Open Neovim - plugins will automatically install:
nvim
  1. Wait for lazy.nvim to install all plugins

  2. Wait for Mason to install language servers and tools

  3. Verify installation:

:checkhealth

Quick Start

Python Development

# Activate virtual environment
source venv/bin/activate

# Open Neovim
nvim .

Key Mappings

Action Keybinding
Command mode ;
Exit insert mode jk
LazyGit Space g g
Claude Code Space c c
Toggle breakpoint Space d b or F9
Start debugging Space d c or F5
Step over Space d o or F10
Step into Space d i or F11
Step out Space d u or F12
Telekasten panel Space z
Find notes Space z f
Search notes Space z g
New note Space z n
Daily note Space z d
Toggle todo Space z t
Show backlinks Space z b
Follow link Space z z
Show calendar Space z c
Insert image Space z I
Markdown preview Space m p
Insert symbol/emoji Space s e
Connect to remote Space r c
Disconnect remote Space r d
Edit SSH config Space r e
Find files (remote) Space r f
Grep (remote) Space r g

See CONFIG_SUMMARY.md for complete keybinding list.

Core Plugins

LSP & Tools

  • mason.nvim - Package manager for LSP servers
  • mason-tool-installer.nvim - Auto-installs tools
  • mason-null-ls.nvim - Bridges Mason and none-ls
  • nvim-lspconfig - LSP configurations

Language Servers

  • pyright - Python type checking
  • ruff - Python linting
  • typescript-language-server - JS/TS support
  • eslint - JavaScript/TypeScript linting
  • tailwindcss - Tailwind CSS IntelliSense

Linting & Formatting

  • none-ls.nvim (formerly null-ls) - Linting/formatting integration
  • conform.nvim - Format orchestration
  • black - Python formatter
  • prettier - JS/TS/HTML/CSS formatter
  • mypy - Python type checker

Debugging

  • nvim-dap - Debug Adapter Protocol
  • nvim-dap-ui - Debugging UI
  • nvim-dap-python - Python debugging
  • debugpy - Python debug adapter

Development

  • lazygit.nvim - Git interface
  • claude-code.nvim - AI assistant
  • tmux.nvim - Tmux integration
  • package-info.nvim - npm package manager
  • telekasten.nvim - Zettelkasten note-taking (notes stored in ~/notes)
  • calendar-vim - Calendar integration for Telekasten
  • telescope-media-files.nvim - Image preview in Telescope
  • markdown-preview.nvim - Live markdown preview in browser
  • telescope-symbols.nvim - Emoji and symbol picker
  • remote-sshfs.nvim - Edit remote files via SSHFS

Syntax & UI

  • nvim-treesitter - Advanced syntax highlighting
  • rainbow-delimiters.nvim - Colored brackets
  • nvim-ts-autotag - Auto-close HTML/JSX tags

Note-Taking with Telekasten

Zettelkasten-style note-taking with wiki-links, tags, and calendar integration.

Setup

mkdir -p ~/notes

Usage

  • Space z opens the Telekasten panel with all commands
  • Create wiki-links with [[note-name]] syntax
  • Add tags with #tag
  • Use :Telekasten show_calendar for visual date navigation

Calendar

  • Days with notes show a + symbol
  • Press Enter on a date to open/create that day's note
  • :CalendarT for full-screen calendar view

Image Preview

Telekasten uses viu for image previews. Install the appropriate backend for your platform:

Platform Install Command Preview Quality Notes
WSL2 (Windows Terminal) cargo install viu --features=sixel Block characters Neovim's terminal doesn't pass through Sixel
macOS (iTerm2) brew install viu Smooth images iTerm2 protocol supported natively
Ubuntu/Linux sudo apt install ueberzugpp Pixel-perfect ueberzugpp renders outside Neovim

Platform Limitations

WSL2 + Windows Terminal:

  • Windows Terminal supports Sixel (v1.22+), and viu works perfectly in the terminal directly
  • However, Neovim's built-in terminal emulator doesn't pass Sixel escape sequences to the outer terminal
  • Result: Block character (▄) previews inside Neovim, which are functional but not smooth
  • Workaround: Use WezTerm with SSH, or accept block previews

macOS (iTerm2):

  • viu auto-detects iTerm2 and uses native image protocol
  • Smooth image previews should work out of the box

Ubuntu/Linux:

  • ueberzugpp renders images as overlays outside Neovim's terminal
  • Provides pixel-perfect image previews
  • Requires X11 or Wayland

Usage:

  • :Telekasten insert_img_link - Browse and insert images with preview
  • :Telescope media_files - Browse media files directly

Configuration Files

~/.config/nvim/
├── init.lua                 # Entry point
├── lua/
│   ├── chadrc.lua          # NvChad theme (onedark)
│   ├── options.lua         # Editor options
│   ├── mappings.lua        # Keybindings
│   ├── configs/            # Plugin configurations
│   │   ├── lspconfig.lua
│   │   ├── null-ls.lua
│   │   ├── dap.lua
│   │   └── ...
│   └── plugins/init.lua    # Plugin declarations
└── README.md               # This file

Documentation

  • CONFIG_SUMMARY.md - Complete configuration reference with all plugins, keybindings, and workflows
  • CLAUDE.md - Architecture guide for AI assistants

Compatibility

  • ✅ Neovim 0.11+ (uses modern vim.lsp.config API)
  • ✅ NvChad v2.5
  • ✅ Supports Python 3.13 (paths configurable)
  • ✅ Virtual environment detection via $VIRTUAL_ENV

Troubleshooting

LSP not working

:LspInfo
:checkhealth lsp

Tools not found

:Mason
:checkhealth mason

Python debugging issues

  • Ensure $VIRTUAL_ENV is set
  • Check debugpy is installed: :Mason

Contributing

This is a personal configuration, but feel free to fork and adapt for your needs.

License

See LICENSE file.


Built with NvChad v2.5

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages