This plugin is built for people who are doing fast iteration with AI pair programming in Neovim.Or indeed anyone who ever finds them self developing faster than they commit and needs a constant visual reminder to commit their changes incrementally.
This plugin is especially designed for Neovim developers who are rapidly iterating and prototyping with AI code generation and may have multiple projects on the go at any one time.
What problem does this solve?
-
Context switching between git and AI pair programming is a common challenge for developers.
-
Context switching between the terminal/editor and project management tools is a common challenge for developers
-
For example if you have two terminals open, one with Neovim for reviewing and editing code, and another with Claude Code for your AI pair programming,
- Nexus.nvim gives you quick access to git and project management software to help you stay on task without needing to leave Neovim or your terminal
- No need to open another pane/window. Stay in deep focus mode and continuously iterate with git and Linear
I always wanted a central location in Neovim to see what is happening in my project so I finally created Nexus.nvim to serve this purpose. It shows my favourite git information in a clean, centered layout. No more continously running "git status" and "git log" and then forgetting how many features I have added since the last commit. This plugin has become an invaluable tool to curb bad git habits and hold me accountable with a constant visual reminder of where I am at and what I am working on.
Commit first, commit often.
- AI is like a bullet train
- Git is like the train tracks with each commit a sleeper holidng the track up.
- Use Nexus to keep you on task with your git commits, giving you a persistent visual reminder
A highly configurable Neovim plugin that provides a git dashboard interface similar to popular dashboard plugins. It can open automatically on startup or just when called with :Nexus depending on user preferneces.
Nexus includes many configurable sections each of which can be enabled/disabled and reordered. Each section has its own keyboard shortcuts which are dynamically shown as subtle hints when your cursor is in that section.
Sections included:
- standard startup dashboard buttons
- new file, find file, find word, etc.
- Git sections (primary feature)
- Recent commits
- Git status
- Linear issues
- Create and update issues directly from Nexus
Planned Sections:
- Github Issues
- Todo List
- Todoist
- ๐จ Neovim ASCII art logo (centered, inspired by alpha.nvim)
- ๐ผ๏ธ Optional image logo support via image.nvim plugin
- ๐ง Dashboard buttons for common actions (optional, configurable)
- ๐ Recent git commits (last 3 with colors and branch info)
- ๐ Git status with diff statistics similar to
git diff --stat - โก Fast git operations (stage, unstage, commit with keybindings)
- ๐ Tmux integration for Claude Code conversation resuming
- ๐ฏ Smart centering that works in full windows and tmux splits
Using lazy.nvim
{
"yourusername/Nexus.nvim",
config = function()
require("nexus").setup({
-- Configuration options (all optional)
})
end,
}Using packer.nvim
use {
"yourusername/Nexus.nvim",
config = function()
require("nexus").setup()
end
}Nexus.nvim works out of the box with sensible defaults. All configuration options are optional:
require("nexus").setup({
-- Dashboard sections
show_dashboard_buttons = true, -- Show dashboard-style buttons with icons
show_recent_commits = true, -- Show git commits section
show_git_status = true, -- Show git status section
recent_commits_count = 3, -- Number of recent commits to show
-- Logo configuration
use_image_logo = false, -- Use image.nvim for logo (requires image.nvim plugin)
image_logo_path = nil, -- Custom image path (defaults to plugin's neovim.png)
image_logo_width = 30, -- Width of the image in character units
image_logo_height = 6, -- Height of the image in line units
-- Advanced options
show_claude_conversations = false, -- Show Claude Code conversations (disabled by default)
})Nexus.nvim supports displaying images as logos using the image.nvim plugin.
- Install the image.nvim plugin
- Ensure your terminal supports image display (Kitty, WezTerm with Kitty Graphics Protocol, or ueberzugpp)
-- Use default included Neovim logo image
require("nexus").setup({
use_image_logo = true
})
-- Use custom image with default size
require("nexus").setup({
use_image_logo = true,
image_logo_path = vim.fn.expand("~/.config/nvim/my-logo.png")
})
-- Use custom image with custom size
require("nexus").setup({
use_image_logo = true,
image_logo_path = "/path/to/your/logo.png",
image_logo_width = 40, -- Wider image
image_logo_height = 8 -- Taller image
})Image logo support is experimental and depends on your terminal's image rendering capabilities:
- Best compatibility: Kitty terminal with native image support
- Good compatibility: WezTerm with Kitty Graphics Protocol enabled
- Limited compatibility: Other terminals with ueberzugpp backend
If you experience positioning issues or images not displaying correctly, please:
- Test with Kitty terminal first to verify functionality
- Ensure image.nvim is properly configured for your terminal
- Try different image sizes with
image_logo_widthandimage_logo_height - Check that your image file is readable and in a supported format (PNG, JPG, etc.)
The plugin will automatically fall back to the ASCII logo if image rendering fails.
| Key | Action |
|---|---|
<Enter> |
Open file (on git status lines) or activate button |
a |
Stage file under cursor |
u |
Unstage file under cursor |
c |
Open commit window |
r |
Refresh git status |
<leader>g |
Open git command window |
q / <Esc> |
Smart quit (close buffer or exit Neovim) |
| Key | Action |
|---|---|
<leader>f |
Find file (Telescope) |
<leader>r |
Recently opened files |
<leader>w |
Find word (live grep) |
<leader>n |
New file |
<leader>b |
Bookmarks |
<leader>s |
Restore session |
Nexus automatically opens when:
- Neovim is started without file arguments
- Current directory is a git repository
- No other buffers are loaded
You can also manually open Nexus with :Nexus
- Shows modified, added, deleted, and untracked files
- Visual diff statistics with
+/-indicators - Color-coded status indicators
- Quick staging/unstaging with
a/ukeys
- Displays last 3 commits by default (configurable)
- Shows commit hashes, branch decorations, and messages
- Syntax highlighting for HEAD pointer and branch names
- Stage files: Press
aon any git status line - Unstage files: Press
uon any git status line - Commit: Press
cto open commit message window - Advanced git: Press
<leader>gfor git command interface
Nexus includes optional integration with Claude Code for conversation management:
require("nexus").setup({
show_claude_conversations = true -- Enable Claude Code integration
})This feature allows resuming Claude Code conversations directly from the dashboard.
Nexus.nvim is built with a modular architecture:
- Clean separation: Each component (logo, dashboard, git operations) is a separate module
- Configurable rendering: All visual elements can be enabled/disabled independently
- Smart centering: Content adapts to window width and tmux environments
- Performance focused: Minimal startup impact, efficient git operations
Contributions are welcome! Please feel free to submit issues and pull requests.
MIT License - see LICENSE file for details.