Neovim Configuration Keybindings
This document outlines all keybindings and their functionalities in this Neovim configuration.
LSP (Language Server Protocol)
These keybindings are provided by lsp-zero default mappings
Keybinding
Mode
Description
K
Normal
Hover documentation
gd
Normal
Go to definition
gD
Normal
Go to declaration
gi
Normal
Go to implementation
gr
Normal
Show references
gs
Normal
Show signature help
<leader>rn
Normal
Rename symbol
<leader>ca
Normal
Code actions
<leader>f
Normal
Format file (LSP)
[d
Normal
Previous diagnostic
]d
Normal
Next diagnostic
Keybinding
Mode
Description
<C-Space>
Insert
Trigger autocompletion
<CR>
Insert
Confirm selection
<C-f>
Insert
Jump forward in snippet
<C-b>
Insert
Jump backward in snippet
Keybinding
Mode
Description
<leader>e
Normal
Find files
<leader>gf
Normal
Git files
<leader>f
Normal
Live grep (Telescope)
<leader>b
Normal
Buffers
<leader>?
Normal
Help tags
<leader>m
Normal
Man pages
<F1>
Normal
Colorscheme picker
<leader>r
Normal
Registers
<leader>k
Normal
Keymaps
<leader>t
Normal
Treesitter
Keybinding
Mode
Description
<F3>
Normal
Toggle file explorer
<F2>
Normal
Find current file in tree
Keybinding
Mode
Description
<leader>gg
Normal
Open LazyGit
Keybinding
Mode
Description
<leader>z
Normal
Previous buffer
<leader>q
Normal
Previous buffer
<leader>x
Normal
Next buffer
<leader>w
Normal
Next buffer
<leader>c
Normal
Close buffer
Keybinding
Mode
Description
<leader>h
Normal
Split horizontal
<leader>v
Normal
Split vertical
<C-h>
Normal
Move to left window
<C-j>
Normal
Move to bottom window
<C-k>
Normal
Move to top window
<C-l>
Normal
Move to right window
Keybinding
Mode
Description
<leader>sh
Normal
Open terminal
<C-[>
Terminal
Escape to normal mode
<C-w>h
Terminal
Move to left window
<C-w>j
Terminal
Move to bottom window
<C-w>k
Terminal
Move to top window
<C-w>l
Terminal
Move to right window
Keybinding
Mode
Description
YY
Normal
Copy to clipboard
<leader>p
Normal
Paste from clipboard
XX
Normal
Cut to clipboard
Keybinding
Mode
Description
J
Visual
Move block down
K
Visual
Move block up
<
Visual
Indent left (keeps selection)
>
Visual
Indent right (keeps selection)
Keybinding
Mode
Description
n
Normal
Next search result (centered)
N
Normal
Previous search result (centered)
<leader><space>
Normal
Clear search highlighting
AI Assistant (Claude Code)
Keybinding
Mode
Description
<C-,>
Normal
Toggle Claude Code terminal
<leader>cc
Normal
Continue Claude Code conversation
<leader>cv
Normal
Start Claude Code in verbose mode
<leader>cn
Normal
Start new Claude Code chat
AI Pair Programming (Aider)
Keybinding
Mode
Description
<leader>Ao
Normal
Open Aider
<leader>Am
Normal
Add modified files to Aider
<leader>af
Normal
Add files to Aider (supports multi-selection with Tab)
Keybinding
Mode
Description
<leader>gb
Normal
Build Go project
<leader>gr
Normal
Run Go main
Keybinding
Mode
Description
<leader>gt
Normal
Run Go tests
<leader>gT
Normal
Run Go test function
<leader>gc
Normal
Toggle Go coverage
<leader>tn
Normal
Run nearest test
<leader>tf
Normal
Run file tests
<leader>ts
Normal
Test summary
Keybinding
Mode
Description
<leader>gd
Normal
Go Debug continue
<leader>gD
Normal
Toggle breakpoint
:GoTest - Run tests
:GoTestFunc - Test function under cursor
:GoBuild - Build with error list
:GoRun - Run current file
:GoCoverage - Show coverage
:GoDoc - Show documentation
:GoRename - Rename symbol
:GoFillStruct - Fill struct literals
:GoInstallBinaries - Install Go tools
Auto-formatting with goimports on save
Static analysis via gopls
Syntax highlighting for Go constructs
Unused parameter detection
Import management
Code completion and diagnostics
Keybinding
Mode
Description
<leader>hc
Normal
Compile with GHC
<leader>hr
Normal
Run with runhaskell
<leader>hi
Normal
Open GHCi REPL
Keybinding
Mode
Description
<leader>cb
Normal
Build project
<leader>ct
Normal
Run tests
<leader>cr
Normal
Run executable
Keybinding
Mode
Description
<leader>sb
Normal
Stack build
<leader>st
Normal
Stack test
<leader>sr
Normal
Stack run
<leader>sg
Normal
Stack GHCi
Keybinding
Mode
Description
<leader>hf
Normal
Format with Ormolu
<leader>f
Normal
LSP formatting
Haskell Language Server (HLS) integration
Advanced syntax highlighting (forall, mdo, proc, patterns)
Auto-indentation with hindent (runs on save)
Ormolu formatting support
Real-time error diagnostics
Code completion and hover documentation
Cabal and Stack project support
Install Haskell toolchain:
ghcup install ghc
ghcup install cabal
ghcup install stack
ghcup install hls
cabal install ormolu
cabal install hindent
Node.js/JavaScript/TypeScript Development
Keybinding
Mode
Description
<leader>ns
Normal
Show package info
<leader>nc
Normal
Hide package info
<leader>nt
Normal
Toggle package info
<leader>nu
Normal
Update package
<leader>nd
Normal
Delete package
<leader>ni
Normal
Install package
<leader>np
Normal
Change package version
Keybinding
Mode
Description
<leader>nr
Normal
Run npm script
<leader>nI
Normal
npm install
<leader>nT
Normal
npm test
<leader>nS
Normal
npm start
<leader>nB
Normal
npm run build
<leader>nD
Normal
npm run dev
Keybinding
Mode
Description
<leader>jt
Normal
Run nearest JS test
<leader>jf
Normal
Run JS file tests
<leader>js
Normal
JS Test summary
Keybinding
Mode
Description
<leader>jd
Normal
JS Debug continue
<leader>jD
Normal
JS Toggle breakpoint
<leader>jr
Normal
JS Debug REPL
Keybinding
Mode
Description
<leader>jp
Normal
Format with Prettier
TypeScript Language Server with inlay hints for parameters, types, and return values
ESLint integration for real-time linting and code actions
Prettier formatting with customizable rules and auto-format on save
Package.json management with visual dependency info and version updates
Jest and Vitest test runners with nearest test execution
VS Code JS Debug adapter for Node.js debugging with breakpoints
Auto-formatting on save for JS/TS files
Enhanced syntax highlighting for JavaScript, TypeScript, JSX, TSX
Spell checking with cspell (when available)
null-ls integration for additional formatting and linting tools
Graceful degradation - Features only activate when plugins are installed
Install Node.js toolchain:
# Install Node.js via nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install --lts
nvm use --lts
# Install global development tools
npm install -g typescript eslint prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin
npm install -g ts-node jest @types/node
npm install -g js-debug-adapter # For debugging support
# Optional: Install spell checker
npm install -g cspell
Keybinding
Mode
Description
<leader>pr
Normal
Run Python file
<leader>pi
Normal
Run Python interactive
<leader>pp
Normal
Run Python3 file
<leader>pR
Normal
Open Python REPL
Virtual Environment Management
Keybinding
Mode
Description
<leader>pv
Normal
Activate virtual environment
Keybinding
Mode
Description
<leader>pI
Normal
pip install
<leader>pU
Normal
pip upgrade
<leader>pS
Normal
pip show
<leader>pF
Normal
pip freeze to requirements.txt
<leader>pR
Normal
pip install from requirements.txt
Keybinding
Mode
Description
<leader>dm
Normal
Django migrate
<leader>dmm
Normal
Django makemigrations
<leader>dr
Normal
Django runserver
<leader>ds
Normal
Django shell
<leader>dt
Normal
Django test
<leader>dc
Normal
Django collectstatic
Keybinding
Mode
Description
<leader>pt
Normal
Run pytest
<leader>ptv
Normal
Run pytest verbose
<leader>ptf
Normal
Run pytest on current file
<leader>ptc
Normal
Run pytest with coverage
<leader>pnt
Normal
Run nearest Python test (neotest)
<leader>pnf
Normal
Run Python file tests (neotest)
<leader>pns
Normal
Python Test summary (neotest)
<leader>pno
Normal
Show test output (neotest)
Keybinding
Mode
Description
<leader>pd
Normal
Python Debug continue
<leader>pD
Normal
Python Toggle breakpoint
<leader>pdr
Normal
Python Debug REPL
<leader>pdl
Normal
Python Debug run last
Keybinding
Mode
Description
<leader>pb
Normal
Format with Black
<leader>pB
Normal
Format all files with Black
<leader>pl
Normal
Lint with ruff
<leader>pL
Normal
Lint all files with ruff
<leader>pf
Normal
Fix with ruff
Keybinding
Mode
Description
<leader>pj
Normal
Convert to Jupyter notebook
<leader>pJ
Normal
Convert from Jupyter notebook
Pyright Language Server for type checking and intelligent code completion
Ruff integration for fast linting and code formatting
Black formatter with auto-format on save
pytest integration with neotest for visual test running
debugpy support for Python debugging with breakpoints
Django/FastAPI/Flask debug configurations
Virtual environment detection and management
Auto-indentation with 4-space tabs (PEP 8 compliant)
Code folding based on indentation
Jupyter notebook conversion support
REPL integration for interactive development
Graceful degradation - Features only activate when tools are installed
Install Python development tools:
# Install Python (if not already installed)
# macOS: brew install python
# Ubuntu: sudo apt install python3 python3-pip python3-venv
# Windows: Download from python.org
# Install Python development tools
pip install --upgrade pip
pip install debugpy pytest black ruff pyright
pip install jupytext # Optional: for Jupyter notebook support
# For Django development
pip install django
# For FastAPI development
pip install fastapi uvicorn
# For Flask development
pip install flask
# Create and activate virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
Keybinding
Mode
Description
<leader>jb
Normal
Build Java project
<leader>jr
Normal
Run Java project
<leader>jc
Normal
Compile current Java file
<leader>jR
Normal
Run current Java file
Keybinding
Mode
Description
<leader>mc
Normal
Maven clean
<leader>mC
Normal
Maven compile
<leader>mt
Normal
Maven test
<leader>mp
Normal
Maven package
<leader>mi
Normal
Maven install
<leader>me
Normal
Maven exec:java
Keybinding
Mode
Description
<leader>gc
Normal
Gradle clean
<leader>gC
Normal
Gradle compile
<leader>gt
Normal
Gradle test
<leader>gb
Normal
Gradle build
<leader>gr
Normal
Gradle run
Keybinding
Mode
Description
<leader>jt
Normal
Run Java tests
<leader>jtf
Normal
Run tests for current file
<leader>jnt
Normal
Run nearest Java test (JDTLS)
<leader>jnc
Normal
Run Java test class (JDTLS)
Keybinding
Mode
Description
<leader>jo
Normal
Organize imports
<leader>jv
Normal
Extract variable
<leader>jV
Normal
Extract variable (visual)
<leader>jm
Normal
Extract method
<leader>jM
Normal
Extract method (visual)
<leader>jc
Normal
Extract constant
<leader>ju
Normal
Update project config
Keybinding
Mode
Description
<leader>jd
Normal
Java Debug continue
<leader>jD
Normal
Java Toggle breakpoint
<leader>jdr
Normal
Java Debug REPL
<leader>jdl
Normal
Java Debug run last
Keybinding
Mode
Description
<leader>jdm
Normal
Show dependencies
Keybinding
Mode
Description
<leader>jj
Normal
Create JAR file
<leader>jJ
Normal
Run JAR file
Keybinding
Mode
Description
<leader>jg
Normal
Generate class template
Keybinding
Mode
Description
<leader>spr
Normal
Spring Boot run (Maven)
<leader>spg
Normal
Spring Boot run (Gradle)
<leader>spt
Normal
Spring Boot test (Maven)
<leader>spb
Normal
Spring Boot build image (Maven)
Eclipse JDT Language Server with advanced Java support
Automatic project detection (Maven, Gradle, or plain Java)
Code completion with intelligent suggestions
Refactoring tools (extract method, variable, constant)
Import organization and dependency management
JUnit/TestNG integration through JDTLS for test execution
Debugging support with breakpoints and REPL
Maven and Gradle build system integration
Spring Boot development support
Code formatting with Google Java Style (configurable)
JAR creation and execution tools
Auto-indentation with 4-space tabs
Syntax-based code folding
Graceful degradation - Features only activate when tools are installed
Install Java development tools:
# Install Java (JDK 11 or higher recommended)
# macOS: brew install openjdk@11 or openjdk@17
# Ubuntu: sudo apt install openjdk-11-jdk or openjdk-17-jdk
# Windows: Download from Oracle or use OpenJDK
# Set JAVA_HOME environment variable
export JAVA_HOME=/path/to/your/java/installation
# Install Maven (optional, for Maven projects)
# macOS: brew install maven
# Ubuntu: sudo apt install maven
# Windows: Download from maven.apache.org
# Install Gradle (optional, for Gradle projects)
# macOS: brew install gradle
# Ubuntu: sudo apt install gradle
# Windows: Download from gradle.org
# Verify installation
java --version
javac --version
mvn --version # if Maven installed
gradle --version # if Gradle installed
Clone this Neovim configuration to ~/.config/nvim/
Install Packer (plugin manager):
git clone --depth 1 https://github.com/wbthomason/packer.nvim \
~ /.local/share/nvim/site/pack/packer/start/packer.nvim
# Install Go toolchain (if not already installed)
# Install via official installer or package manager
# In Neovim:
:PackerSync
:GoInstallBinaries
# Install GHCup and Haskell toolchain
curl --proto ' =https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
# Install Haskell tools
ghcup install ghc
ghcup install cabal
ghcup install stack
ghcup install hls
cabal install ormolu
cabal install hindent
# In Neovim:
:TSInstall! haskell
Node.js/JavaScript/TypeScript Development
# Install Node.js via nvm (if not already installed)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~ /.bashrc # or restart terminal
nvm install --lts
nvm use --lts
# Install global development tools
npm install -g typescript eslint prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin
npm install -g ts-node jest @types/node
npm install -g js-debug-adapter # For debugging support
npm install -g cspell # Optional: spell checker
# In Neovim:
:PackerSync
:Mason
# Install: typescript-language-server, eslint-lsp (if not auto-installed)
:TSInstall! javascript typescript tsx
# Install Python development tools
pip install --upgrade pip
pip install debugpy pytest black ruff pyright
pip install jupytext # Optional: for Jupyter notebook support
# Framework-specific installations (optional)
pip install django # For Django development
pip install fastapi uvicorn # For FastAPI development
pip install flask # For Flask development
# In Neovim:
:PackerSync
:Mason
# Install: pyright, ruff-lsp (if not auto-installed)
:TSInstall! python
# Install Java JDK (11 or higher recommended)
# macOS: brew install openjdk@17
# Ubuntu: sudo apt install openjdk-17-jdk
# Windows: Download from Oracle or use OpenJDK
# Set JAVA_HOME environment variable
export JAVA_HOME=/path/to/your/java/installation
# Install build tools (optional but recommended)
# Maven:
# macOS: brew install maven
# Ubuntu: sudo apt install maven
# Gradle:
# macOS: brew install gradle
# Ubuntu: sudo apt install gradle
# In Neovim:
:PackerSync
:Mason
# Install: jdtls (Java LSP server will be auto-configured)
:TSInstall! java
Start Neovim and run :PackerSync
Install LSP servers via :Mason
Install Treesitter parsers as needed
Restart Neovim to ensure all configurations load properly
"module not found" errors : Run :PackerSync and restart Neovim
LSP not working : Check :Mason for missing language servers
Treesitter parser failures : Run :TSUpdate to refresh parsers
Features not working : Some features only activate after installing their corresponding plugins
This configuration uses safe module loading with pcall() to prevent crashes:
Missing plugins won't break Neovim startup
Features gracefully degrade when dependencies aren't available
Keybindings only register for installed plugins
You can run :PackerSync without errors even before plugins are installed
Feature
Requires Plugin
Auto-detects
Package.json management
package-info.nvim
✅
Prettier formatting
prettier.nvim
✅
Debug support
nvim-dap
✅
Test runners
neotest-*
✅
Linting/formatting
null-ls.nvim
✅
The leader key in this configuration is set to ,
Some commands may require specific plugins to be installed
Visual mode keybindings can be used after selecting text (v)
Run :PackerSync after adding new plugins
Run :GoInstallBinaries to install Go development tools
Run :TSInstall! haskell to ensure Haskell treesitter parser
Run :TSInstall! javascript typescript tsx for Node.js development
Run :TSInstall! python for Python development
Run :TSInstall! java for Java development