π° To be jj cake hand β.
β οΈ Important: This is NOT a Neovim distribution. It's my personal configuration that uses many plugins and custom settings. I'm sharing it to inspire others to build their own Neovim setup. Hope it helps!
- π» VSCode-Native Editing - Bring Neovim's modal editing to VSCode with motion plugins (Flash, Hop) for Jupyter notebooks and other workflows
- π³ JJ-Powered Version Control - Deep integration with Jujutsu (jj), featuring animated status display with conflict detection, bookmark management, and seamless Git compatibility
- π§ Cross-Platform Intelligence - Auto-detects system environment (Windows/Mac/Linux) and adapts behavior accordingly
- β¨ Dynamic Dashboard - Animated ASCII art with glitch effects
- π Python-First Documentation - Custom Neogen templates with Chinese support, auto-extracting parameter defaults, type hints, and return values
- π Full Jupyter Notebook Support - Complete .ipynb editing experience with cell management, kernel control, inline output preview, and REPL integration
Copilot AI Intelligent Completion & Next Edit Suggestions
Snacks Picker Fuzzy File Search
Jujutsu Version Control System Integration
Visual Diff Viewer
Jupyter Notebook Integration (Bugs)
~/.config/nvim/
βββ init.lua # Entry point
βββ lazy-lock.json # Plugin version lock file
βββ stylua.toml # Lua formatter config
βββ .luarc.json # Lua language server config
β
βββ lua/
β βββ config/ # Core configuration
β β βββ autocmds.lua # Auto commands
β β βββ keymaps.lua # Key mappings
β β βββ lazy.lua # Lazy.nvim loader
β β βββ lsp.lua # LSP configuration
β β βββ options.lua # Neovim options
β β
β βββ plugins/ # Plugin specifications
β β βββ ai/ # AI-related plugins
β β βββ core/ # Core plugins (blink, conform, mason, etc.)
β β βββ dap/ # Debug adapter protocol
β β βββ disabled/ # Disabled plugin configs
β β βββ editor/ # Editor enhancements
β β βββ tools/ # Development tools
β β βββ ui/ # UI plugins
β β βββ vcs/ # Version control (git, jj)
β β
β βββ neogen/ # Neogen annotation templates
β β βββ python/ # Python-specific templates with Chinese support
β β
β βββ utils/ # Utility modules
β βββ ascii_arts.lua # ASCII art for dashboard
β βββ dashboardAnimation.lua # Dashboard glitch animation
β βββ debug.lua # Debug utilities
β βββ icons.lua # Icon mappings
β βββ jj_status.lua # JJ status display
β βββ snacks_dashboard.lua # Snacks dashboard config
β βββ snacks_explorer_preview.lua # Snacks explorer preview
β βββ system.lua # System detection
β
βββ after/ # After plugins loaded
βββ lsp/ # LSP server custom configs
βββ snippets/ # Custom snippets
βββ docs/ # Screenshots & images
If you want to try this configuration:
# required
mv ~/.config/nvim{,.bak}
# optional but recommended
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
# Clone this configuration
jj git clone https://github.com/RicardoRyn/nvim.git ~/.config/nvim
# Start Neovim
nvimAfter the first launch:
- Check plugins with
:Lazyto ensure all plugins are installed correctly - Check health with
:checkhealthto verify system dependencies and LSP configuration - Customize it for your own needs!
This configuration is fully compatible with VSCode Neovim (an extension of VSCode), enabling Neovim-style modal editing in VSCode with compatible Neovim plugins.
Personally, I need to edit Jupyter Notebooks, but Neovim's support for them is quite limited, so I have to use VSCode for that purpose. However, I've become so accustomed to Neovim's modal editing that I can't work efficiently without it. So I tried using Neovim within VSCode, and it works quite well.
-
Install the
VSCode Neovimextension from the VSCode Marketplace. -
Configure the extension in your VSCode settings (
settings.json):{ // vscode-neovim "vscode-neovim.neovimClean": false, // Don't clear Neovim configuration "extensions.experimental.affinity": { "asvetliakov.vscode-neovim": 1 // Neovim extension affinity }, "vscode-neovim.compositeKeys": { "jk": { "command": "vscode-neovim.escape" // Composite key jk mapped to Escape } } } -
For a better experience, some keybindings need to be configured in VSCode's
keybindings.json. You can refer to my settings for reference.
Since VSCode has its own built-in UI, terminal, and keybinding system, this configuration only enables efficiency-focused plugins that enhance the editing experience without conflicting with VSCode's native features:
- lazy.nvim - Plugin manager for lazy loading
- mini.ai - Enhanced text objects for smarter editing
- mini.surround - Quick surround operations (add/delete/change)
- nvim-spider - Smart word-wise navigation
- nvim-treesitter-textobjects - Treesitter-based text objects
- flash.nvim & hop.nvim - Fast cursor jumping
- treesj - Code splitting and joining utilities
- yanky.nvim - Enhanced clipboard with history
For the complete list of VSCode-specific keymaps, see the VSCode Keymaps section below.
Click this
<leader>
βββ <Space> (Smart Files)
βββ a (AI)
β βββ a - Toggle Sidekick CLI
β βββ c - Toggle Sidekick Copilot
β βββ d - Detach CLI Session
β βββ f - Send File
β βββ i - Toggle Sidekick iFlow
β βββ p - Select Sidekick Prompt (including Visual mode)
β βββ s - Select CLI
β βββ t - Send This (including Visual mode)
β βββ v - Send Visual Selection (including Visual mode)
βββ b (Buffer)
β βββ a - Delete All Buffers
β βββ b - Delete Picked Buffer
β βββ d - Delete Buffer
β βββ l - Delete Buffers Left
β βββ o - Delete Other Buffers
β βββ p - Toggle Pin
β βββ P - Delete Unpined Buffers
β βββ r - Delete Buffers Right
β βββ < - Move Buffer Left
β βββ > - Move Buffer Right
βββ c (Copy/CSV)
β βββ c - Copy Absolute Path (in Mini Files)
β βββ d - Copy Directory Path (in Mini Files)
β βββ f - Copy File Name (in Mini Files)
β βββ r - Copy Relative Path (in Mini Files)
β βββ sv - Toggle CSV View
βββ d (Debug)
β βββ b - Breakpoint
β βββ B - Conditional Breakpoint
β βββ c - Run to Cursor
β βββ C - Clear Breakpoints
β βββ d - Disconnect
β βββ D - Disconnect (Terminate Debuggee)
β βββ h - Hover
β βββ i - Step Into
β βββ k - Step Back
β βββ o - Step Over
β βββ O - Step Out
β βββ q - Terminate Session
β βββ r - Restart
β βββ R - Toggle REPL
β βββ s - Start/Continue
β βββ u - Toggle UI
β βββ f (Float)
β βββ e - Float Expression
β βββ f - Float Frames
β βββ s - Float Scopes
β βββ S - Float Sessions
β βββ t - Float Threads
βββ D (Dev)
β βββ r (Run lua)
βββ e (Explorer)
β βββ e - Mini Files
β βββ f - Mini Files (Current File)
β βββ s - File Explorer (for Picture Preview)
βββ f (Find)
β βββ c - Find Config Files
β βββ f - Find Files
β βββ g - Find Git Files
β βββ p - Projects
β βββ r - Recent Files
β βββ t - Todo (Buffers)
β βββ T - Todo/Fix (Buffers)
βββ g (Git)
β βββ b - Blame Line
β βββ B - Blame Buffer
β βββ p - Preview Hunk Inline
β βββ P - Preview Hunk (Float)
β βββ r - Reset Hunk
β βββ R - Reset Buffer
β βββ t - Toggle Current Line Blame
β βββ w - Toggle Word Diff
β βββ g - LazyGit
β βββ h (Github)
β βββ i - GitHub Issues (Open)
β βββ I - GitHub Issues (All)
β βββ p - GitHub Pull Requests (Open)
β βββ P - GitHub Pull Requests (All)
βββ h (Home)
βββ j (Jujutsu)
β βββ a - JJ Annotate File
β βββ A - JJ Abandon
β βββ b (Bookmark)
β β βββ c - JJ Bookmark Create
β β βββ d - JJ Bookmark Delete
β β βββ m - JJ Bookmark Move
β βββ C - Conflict
β βββ d - JJ Diff Current Buffer
β βββ D - JJ Describe
β βββ e - JJ Edit
β βββ f - JJ Fetch
β βββ l - JJ Log (All)
β βββ L - JJ Log
β βββ n - JJ New
β βββ r - JJ Rebase
β βββ R - JJ Redo
β βββ s - JJ Status
β βββ S - JJ Squash
β βββ U - JJ Undo
β βββ p (Push/PR)
β β βββ l - JJ open PR from bookmark in current revision or parent
β β βββ p - JJ Push
β β βββ r - JJ open PR from bookmark in current revision or parent
β βββ t - JJ Tug
βββ k (Kernel) (Only in Jupyter Notebook)
β βββ 0 - Restart Kernel
β βββ a - Insert Cell Above
β βββ b - Insert Cell Below
β βββ c - Clear Current Cell Output
β βββ C - Clear All Outputs
β βββ f - Toggle Cell Fold
β βββ h - Inspect Variable at Cursor
β βββ H - Toggle Auto-Hover
β βββ i - Interrupt Kernel
β βββ j - Open Cell Picker
β βββ m - Convert to Markdown Cell
β βββ n - Show Kernel Info
β βββ o - Open Cell Output in Float
β βββ r - Convert to Raw Cell
β βββ s - Start Kernel
β βββ S - Shutdown Kernel
β βββ v - Show All Variables in Cell
β βββ x - Execute Cell (Menu)
β βββ X - Execute and Next (Menu)
β βββ y - Convert to Code Cell
βββ l (LSP)
β βββ a - Code Actions
β βββ d - Show Diagnostics (Line)
β βββ D - Show Diagnostics (Buffer)
β βββ f - Code Format
β βββ m - Toggle Code Block
β βββ n - Generate Docstring
β βββ r - Rename Symbol
β βββ v - Virtual Env Selector
β βββ sp - Restart LSP
βββ L (Lazy)
βββ n (Noice)
β βββ a - All
β βββ e - Error
β βββ h - History
β βββ l - Last Message
β βββ m - Messages
β βββ n - Noice Picker
βββ p (Paste)
βββ s (Search/System)
β βββ b - Buffers
β βββ c - Commands
β βββ d - Diagnostics (Buffer)
β βββ D - Diagnostics
β βββ h - Help Pages
β βββ i - Icons
β βββ I - Incoming Calls
β βββ j - JJ Picker Status
β βββ J - Jumps
β βββ k - Keymaps
β βββ l - LSP Info
β βββ L - Search for Plugin Spec
β βββ m - Marks
β βββ O - Outgoing Calls
β βββ p - Spelling
β βββ P - Pickers
β βββ r - Resume
β βββ R - Search and Replace (Grug-far)
β βββ s - LSP Symbols (Buffer)
β βββ S - LSP Symbols (Workspace)
β βββ t - Todo Comments
β βββ T - Todo/Fix Comments
β βββ u - Undotree
β βββ v - Clipboard History
β βββ " - Registers
β βββ . - Scratch Select
β βββ / -
β βββ : - Command Select
βββ S (Session)
β βββ d - Don't Save Current Session
β βββ l - Restore Last Session
β βββ s - Restore Session
β βββ S - Select Session
βββ t (Tab/Toggle)
β βββ d - Close Tab
β βββ n - New Tab
β βββ s - Tab Split
βββ u (UI Toggle)
β βββ b - Toggle Dark Background
β βββ c - Colorschemes
β βββ d - Toggle Diagnostics
β βββ D - Toggle Dim
β βββ g - Toggle Git Signs
β βββ h - Toggle Inlay Hints
β βββ l - Toggle Relative Number
β βββ L - Toggle Line Number
β βββ m - Markdown Preview
β βββ n - Noice Dismiss
β βββ r - Redraw / Clear hlsearch / Diff Update
β βββ w - Toggle Wrap
β βββ z - Toggle Zoom
β βββ Z - Toggle Zen Mode
βββ x (Trouble/QuickFix)
β βββ l - LSP Definitions/References (Trouble)
β βββ L - Location List (Trouble)
β βββ Q - Quickfix List (Trouble)
β βββ s - Symbols (Trouble)
β βββ x - Diagnostics (Trouble)
β βββ X - Buffer Diagnostics (Trouble)
βββ z (Zoxide)
βββ . - Scratch
βββ : - Command History
βββ ? - Buffer Local Keymaps
βββ / (Grep)
βββ b - Grep Buffers
βββ l - Lines
βββ w - Grep Word
βββ / - Grep
Motion & Navigation
jk- Exit insert modes- Flash jump/searchxw/xr- Flash words/resumexj/xk/xl/xh- Hop navigationShift+h/Shift+l- Previous/next bufferCtrl+h/Ctrl+j/Ctrl+k/Ctrl+l- Navigate tmux windowsgd/gD/gr/gI/gy- Goto definition/declaration/references/implementation/type]d/[d- Next/previous diagnostic]g/gh/[g/gH- Next/previous git hunk
Text Objects
ciq,dab,yiw- Enhanced text objectsgsaiw",gsr'",gsd'- Surround operations
Copilot
Tab- Goto/Apply next edit suggestionCtrl+y/Ctrl+w- Accept Copilot suggestion/wordAlt+]/Alt+[- Next/previous Copilot suggestionCtrl+]- Dismiss Copilot suggestion
Terminal
Ctrl+//Ctrl+_- Open terminal
<leader>
βββ <Space> (Files) - Quick open file
βββ ff / <Space> (Files) - Quick open file
βββ aa (UI) - Toggle auxiliary bar
βββ b (Buffer)
β βββ d - Close buffer
β βββ o - Close other buffers
β βββ a - Close all buffers
β βββ l - Close buffers to the left
β βββ r - Close buffers to the right
β βββ < - Move buffer left
β βββ > - Move buffer right
βββ l (LSP)
β βββ f - Format code
β βββ r - Rename symbol
β βββ a - Code actions
βββ o (Outline)
βββ o - Focus outline
βββ v - Toggle outline visibility
Motion & Navigation
s- Flash jump/searchxw/xr- Flash words/resumexj/xk/xl/xh- Hop navigationShift+h- Previous bufferShift+l- Next bufferCtrl+w Ctrl+h/Ctrl+w Ctrl+j/Ctrl+w Ctrl+k/Ctrl+w Ctrl+l- Navigate left/right windows (requires VSCode keybinding config)Ctrl+o- Navigate backCtrl+i- Navigate forward]d- Go to next diagnostic[d- Go to previous diagnostic
Editing
Ctrl+d/Ctrl+u- Move cursor down/up 5 linesCtrl+y- Accept inline suggestion
Text Objects
ciq,dab,yiw- Enhanced text objectsgsaiw",gsr'",gsd'- Surround operations
Jupyter Notebook Cell Operations
l- Edit current celly- Copy cellp- Paste cellCtrl+Backspace- Clear all cell outputsAlt+Backspace- Clear current cell outputsCtrl+j Ctrl+k- Expand/collapse cell inputCtrl+Shift+Alt+C- Collapse all cell inputsShift+Alt+Backspace- Restart kernelAlt+h/Alt+l- Fold/unfold notebook cell
Terminal
Ctrl+/- Toggle built-in terminalCtrl+Shift+=- Toggle maximized panel






