This document outlines all keybindings and their functionalities in this Neovim configuration.
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 |
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 |
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
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 |
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
# 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