This is my personal Neovim configuration, organized to be minimal, clean, and fast.
It uses lazy.nvim for plugin management and is structured entirely in Lua.
Most of my bindings are sensible defaults or the recommended mappings from the plugins.
I've changed some (like window navigation) to avoid conflicts with tmux, which I highly recommend.
I also use zellij and ghostty (similar bindings to kitty) so I made sure there should be no conflicts with any of the hotkeys.
You may also like to look at my tmux configuration.
Recommended tools:
- Ghostty: terminal
- zellij: multiplexer (or tmux is nice too)
- nvim: (of course neovim lol)
- pnpm: manage node runtimes and global node tools
- uv: manage python runtimes and global python tools
- cargo: manage rust global tools (and recommended to install from rustup)
- zvm: manage zig
Also recommend Arch/yay with flatpak for other things (not required for this). Terminal tools you will probably need fzf, rg, rust-analyzer, ruff, ...maybe some other tools? I forget.
- Legend
- Structure
- Installation
- Plugins
- Available Commands
- Hotkey Mappings
These icons indicate the source of each hotkey mapping:
| Icon | Type | Description |
|---|---|---|
| β | Enabled | Marking plugins that are enabled. |
| β | Disabled | Marking plugins that are disabled. |
| π¦ | Default | Hardcoded by the plugin itself. |
| π‘ | Suggested | Recommended by the plugin and implemented in my config. |
| π οΈ | Custom | My own unique mapping or a modification of a default. |
The configuration is broken into a modular structure for ease of reading and maintenance. Each component has a specific responsibility:
init.lua: The main entry point. It bootstrapslazy.nvimand loads the core settings and plugins.lua/core/options.lua: Contains all globalvim.optsettings.lua/core/keymaps.lua: Defines global keymappings that aren't tied to a specific plugin.lua/plugins/: This directory holds all plugin specifications. Each.luafile in this directory defines a single plugin (or a related group) forlazy.nvimto load.lua/plugins/lsp/: Dedicated directory for Language Server Protocol (LSP) configurations.lua/plugins/disabled/: Contains plugins that are currently disabled.
Follow these steps to set up the environment on a new machine:
- Clone this repository.
- Run the
install.shscript to:- Create the necessary
~/.config/nvimdirectories. - Copy all the Lua configuration files to the correct locations.
- Clean up any old
init.vimorvim-plugfiles. - Launch Neovim and run
:Lazy syncto automatically install and update all plugins.
- Create the necessary
This setup is managed by lazy.nvim and organized into individual files within the lua/plugins/ directory. Below is a catalog of all installed plugins, sorted by category.
These are foundational libraries and core editor enhancements.
| Plugin | Source | Description | |
|---|---|---|---|
| β | plenary.nvim |
nvim-lua/plenary.nvim |
A core Lua library providing common utilities (telescope, etc.) |
| β | nvim-treesitter |
nvim-treesitter/nvim-treesitter |
Provides advanced syntax highlighting and code parsing. |
| β | rainbow-delimiters.nvim |
HiPhish/rainbow-delimiters.nvim |
Provides rainbow parentheses, loaded as a dependency for Treesitter. |
| β | mini.nvim |
nvim-mini/mini.nvim |
A library of minimal, fast, and feature-rich Lua plugins. |
Plugins that modify the Neovim user interface, appearance, and status.
| Plugin | Source | Description | |
|---|---|---|---|
| β | nvim-tree.lua |
nvim-tree/nvim-tree.lua |
A file explorer sidebar. |
| β | nvim-web-devicons |
nvim-tree/nvim-web-devicons |
Provides file-type icons (used by nvim-tree and lualine). |
| β | lualine.nvim |
nvim-lualine/lualine.nvim |
A feature-rich and configurable statusline. |
| β | todo-comments.nvim |
folke/todo-comments.nvim |
Highlights TODO:, FIX:, NOTE:, etc. in your code. |
| β | transparent.nvim |
xiyaowong/transparent.nvim |
Makes the Neovim editor background transparent. |
| β | nvim-notify |
rcarriga/nvim-notify |
A modern, animated notification system. |
| β | colorscheme-persist.nvim |
propet/colorscheme-persist.nvim |
Persist and pick your favorite colorschemes. |
| β | Hypersonic.nvim |
tomiis4/hypersonic.nvim |
A UI animation engine for Neovim. |
| β | mini.map |
nvim-mini/mini.nvim |
A minimal and fast minimap for Neovim. |
Plugins focused on finding and navigating files and buffers.
| Plugin | Source | Description | |
|---|---|---|---|
| β | telescope.nvim |
nvim-telescope/telescope.nvim |
A highly extendable fuzzy finder for files, buffers, grep, etc. |
| β | marks.nvim |
chentoast/marks.nvim |
A plugin to better manage and visualize Neovim's marks. |
Plugins for Git integration and version control.
| Plugin | Source | Description | |
|---|---|---|---|
| β | vim-fugitive |
tpope/vim-fugitive |
The classic and powerful Git wrapper for Vim/Neovim. |
| β | diffview.nvim |
sindrets/diffview.nvim |
A powerful diff viewer for Git revisions. |
These are the foundational plugins for Neovim's LSP ecosystem.
| Plugin | Source | Description | |
|---|---|---|---|
| β | mason.nvim |
williamboman/mason.nvim |
Manages LSP servers, linters, and formatters automatically. |
| β | mason-lspconfig.nvim |
williamboman/mason-lspconfig.nvim |
Bridges mason.nvim with nvim-lspconfig. |
| β | nvim-lspconfig |
neovim/nvim-lspconfig |
Provides the default configurations for Neovim's built-in LSP. |
These are specialized plugins that provide enhanced language support or unique features.
| Plugin | Source | Description | |
|---|---|---|---|
| β | typescript-tools.nvim |
pmizio/typescript-tools.nvim |
Comprehensive TypeScript integration for Neovim. |
| β | rustaceanvim |
mrcjkb/rustaceanvim |
Supercharge your Rust experience in Neovim. |
| β | crates.nvim |
saecki/crates.nvim |
Helps manage Rust dependencies in Cargo.toml files. |
My LSP setup is highly modular. While Mason handles installation, the actual server configurations (including pyright, ruff, and others) are stored in individual files under lua/plugins/lsp/.
Important
Modular Configuration: Individual server configurations are stored in lua/plugins/lsp/.
The following tools are automatically installed via mason-lspconfig.nvim and configured via their respective files in lua/plugins/lsp/:
- TypeScript / JavaScript:
ts_ls(configured bytypescript-tools.nvim) - Python:
pyright,ruff - Rust:
rust_analyzer(typically handled byrustaceanvim) - GraphQL:
graphql - YAML / Kubernetes:
yamlls - Markdown:
marksman - Docker:
dockerls,docker_compose_language_service - TOML:
taplo - JSON (
package.json):jsonls - Lua:
lua_ls - Vue:
vue_ls - Tailwind:
tailwindcss - HTML / CSS:
html,cssls
Note
Interdependency: Mason and nvim-lspconfig work together.
- Mason: Manages the installation of the server binaries.
- LSP Files (
lua/plugins/lsp/): Manage the configuration and activation of those servers using Neovim's native LSP API.
Plugins that enhance the day-to-day text editing experience.
| Plugin | Source | Description | |
|---|---|---|---|
| β | vim-visual-multi |
mg979/vim-visual-multi |
Provides powerful multiple cursor support. |
| β | Comment.nvim |
numToStr/Comment.nvim |
Smart commenting plugin, provides gc and other motions. |
| β | silicon.nvim |
krivahtoo/silicon.nvim |
Generates beautiful code screenshots from within Neovim. |
| β | nvim-autopairs |
windwp/nvim-autopairs |
Autopairs for Neovim written in Lua. |
| β | instant.nvim |
jbyuki/instant.nvim |
A plugin for collaborative editing. |
Plugins related to artificial intelligence and code companions.
| Plugin | Source | Description | |
|---|---|---|---|
| β | codecompanion.nvim |
olimorris/codecompanion.nvim |
AI code companion, configured to use Ollama. |
Plugins for note-taking and knowledge management.
| Plugin | Source | Description | |
|---|---|---|---|
| β | obsidian.nvim |
epwalsh/obsidian.nvim |
Integrates Neovim with the Obsidian note-taking app. |
| β | markview.nvim |
OXY2DEV/markview.nvim |
A markdown previewer plugin. |
By default, language servers, linters, and formatters are installed and run through mason.nvim. This approach is highly recommended due to its isolated environment, which prevents global pathing issues, "version hell," and ensures that Neovim plugins can reliably find the correct internal files (like tsserver.js).
Note
Interdependency: Mason and nvim-lspconfig work together.
- Mason: Manages the installation of the server binaries.
- LSP Files (
lua/plugins/lsp/): Manage the configuration and activation of those servers using Neovim's native LSP API.
However, you can still choose to install and configure custom tools globally using package managers. If you prefer that route, you will need to modify the configurations (e.g., lua/plugins/lsp/typescript-tools.lua or lua/plugins/mason-lspconfig.lua) to explicitly resolve those global binaries from your $PATH instead of falling back to Mason.
If you opt out of Mason for specific tools, you can install them globally via:
- uv:
uv tool install pyright ruff - cargo / rustup:
rustup component add rust-analyzer - pnpm:
pnpm add -g typescript typescript-language-server
The following tools are automatically installed and managed by Mason in this configuration via mason-lspconfig.nvim. Their individual configurations can be found in lua/plugins/lsp/:
- TypeScript / JavaScript:
ts_ls(configured bytypescript-tools.nvim) - Python:
pyright,ruff - Rust:
rust_analyzer(typically handled byrustaceanvim) - GraphQL:
graphql - YAML / Kubernetes:
yamlls - Markdown:
marksman - Docker:
dockerls,docker_compose_language_service - TOML:
taplo - JSON (
package.json):jsonls - Lua:
lua_ls - Vue:
vue_ls - Tailwind:
tailwindcss - HTML / CSS:
html,cssls
If you need to work in a language not listed above (e.g., Go, Zig, C#, or Terraform), you can use mason.nvim to install the server easily without polluting your global system tools.
- Open Mason:
:Mason - Find a tool: Press
/to search. - Install: Press
ion the tool. - Neovim will automatically attempt to use it if
lspconfigis configured for that language.
This section provides a quick reference for the most important :Commands for each tool. These commands allow you to manually trigger plugin features.
| Plugin | Commands |
|---|---|
| nvim-tree | :NvimTreeToggle, :NvimTreeOpen, :NvimTreeClose, :NvimTreeFocus, :NvimTreeFindFile, :NvimTreeCollapse |
| telescope | :Telescope, :Telescope find_files, :Telescope live_grep, :Telescope buffers, :Telescope help_tags, :Telescope oldfiles, :Telescope lsp_definitions, :Telescope lsp_references, :Telescope resume, :Telescope colorscheme |
| todo-comments | :TodoQuickFix, :TodoLocList, :TodoTelescope, :TodoFzfLua |
| vim-fugitive | :Git, :Gstatus, :Gblame, :Gdiffsplit, :Gread, :Gwrite, :Ggrep, :GBrowse, :GDelete, :GRename, :GMove |
| diffview | :DiffviewOpen, :DiffviewClose, :DiffviewFileHistory, :DiffviewToggleFiles, :DiffviewFocusFiles, :DiffviewRefresh |
| mason | :Mason, :MasonUpdate, :MasonInstall, :MasonUninstall, :MasonUninstallAll, :MasonLog |
| rustaceanvim | :RustLsp runnables, :RustLsp debuggables, :RustLsp testables, :RustLsp codeAction, :RustLsp hover actions, :RustLsp explainError, :RustLsp renderDiagnostic, :RustLsp openCargo, :RustLsp openDocs, :RustLsp parentModule, :RustLsp joinLines, :RustLsp syntaxTree, :RustLsp flyCheck, :RustAnalyzer config |
| typescript-tools | :TSToolsOrganizeImports, :TSToolsSortImports, :TSToolsAddMissingImports, :TSToolsRemoveUnusedImports, :TSToolsRemoveUnused, :TSToolsFixAll, :TSToolsGoToSourceDefinition, :TSToolsRenameFile, :TSToolsFileReferences |
| obsidian | :ObsidianNew, :ObsidianQuickSwitch, :ObsidianSearch, :ObsidianToday, :ObsidianTomorrow, :ObsidianYesterday, :ObsidianTemplate, :ObsidianRename, :ObsidianOpen, :ObsidianBacklinks, :ObsidianTags, :ObsidianDailies, :ObsidianLink, :ObsidianLinkNew, :ObsidianLinks, :ObsidianExtractNote, :ObsidianWorkspace, :ObsidianPasteImg, :ObsidianToggleCheckbox, :ObsidianNewFromTemplate, :ObsidianTOC |
| silicon | :Silicon, :Silicon! [file] |
| transparent | :TransparentEnable, :TransparentDisable, :TransparentToggle |
| nvim-notify | :Notifications, :NotificationsClear, :Telescope notify |
| codecompanion | :CodeCompanion, :CodeCompanionChat, :CodeCompanionActions, :CodeCompanionCmd, :CodeCompanionAdd |
| markview | :Markview, :Markview Toggle, :Markview Enable, :Markview Disable, :Markview splitToggle, :Markview render, :Markview clear, :Markview HybridEnable, :Markview traceExport |
| instant | :InstantStartServer, :InstantStopServer, :InstantStartSingle, :InstantJoinSingle, :InstantStop, :InstantStartSession, :InstantJoinSession, :InstantStatus, :InstantFollow, :InstantStopFollow, :InstantOpenAll, :InstantSaveAll, :InstantMark, :InstantMarkClear |
| hypersonic | :Hypersonic preview |
| roslyn | :Roslyn restart, :Roslyn start, :Roslyn stop, :Roslyn target |
| crates | :Crates toggle, :Crates reload, :Crates show_popup, :Crates show_versions_popup, :Crates show_features_popup, :Crates show_dependencies_popup, :Crates update_crate, :Crates update_all_crates, :Crates upgrade_crate, :Crates upgrade_all_crates, :Crates open_homepage, :Crates open_repository, :Crates open_documentation |
| marks | :MarksToggleSigns, :MarksListBuf, :MarksListGlobal, :MarksListAll, :BookmarksList, :BookmarksListAll, :MarksQFListBuf, :MarksQFListGlobal, :MarksQFListAll, :BookmarksQFList, :BookmarksQFListAll |
The leader key (<Leader>) is set to \. This section lists the primary hotkeys used in this configuration, divided into core Neovim mappings and plugin-specific mappings.
These are the standard, out-of-the-box Neovim keybindings (Normal Mode unless specified).
| Key | Action |
|---|---|
h j k l |
Move left, down, up, right |
w b |
Move to start of next / previous word |
e ge |
Move to end of next / previous word |
W B E gE |
Same as above but using WORD (spaces only) |
0 $ |
Move to beginning / end of line |
^ _ |
Move to first non-blank character of line |
gg G |
Move to first / last line of file |
( ) |
Move to start of previous / next sentence |
{ } |
Move to start of previous / next paragraph |
H M L |
Move to Top, Middle, Bottom line of the window |
% |
Jump to matching bracket |
f{char} F{char} |
Find character forward / backward |
t{char} T{char} |
Move "till" character forward / backward |
; , |
Repeat last f / t (forward / backward) |
| Key | Action |
|---|---|
i I |
Insert at cursor / first non-blank of line |
a |
Append after cursor |
A |
Append at end of line |
o O |
Open new line below / above |
r |
Replace single character |
R |
Enter Replace mode |
x X |
Delete character under / before cursor |
d{motion} |
Delete (cut) based on motion |
dd |
Delete (cut) current line |
D |
Delete (cut) to end of line |
c{motion} |
Change (cut + insert) based on motion |
cc |
Change (cut + insert) current line |
C |
Change (cut + insert) to end of line |
s S |
Substitute character / line |
y{motion} |
Yank (copy) based on motion |
yy Y |
Yank current line |
p P |
Paste after / before cursor |
u <C-r> |
Undo / Redo |
. |
Repeat last change |
J |
Join current line with next |
~ |
Toggle case of character |
| Key | Action |
|---|---|
v V |
Start Visual / Visual Line mode |
<C-v> |
Start Visual Block mode |
o |
Move to other end of selection |
u U |
Make selection lowercase / uppercase |
> < |
Indent / Outdent selection |
| Key | Action |
|---|---|
/ ? |
Search forward / backward |
n N |
Repeat search forward / backward |
* # |
Search for word under cursor (forward / backward) |
:%s/old/new/g |
Substitute old with new globally |
| Key | Action |
|---|---|
<C-w>s <C-w>v |
Split window horizontally / vertically |
<C-w>w |
Cycle between windows |
<C-w>h j k l |
Move to window in direction |
<C-w>q <C-w>c |
Quit / Close current window |
<C-w>o |
Close all other windows |
<C-w>r |
Rotate windows |
<C-w>= |
Make windows equal size |
:tabnew |
Open new tab |
gt gT |
Move to next / previous tab |
| Key | Action |
|---|---|
K |
Hover information |
gd |
Go to definition |
gD |
Go to declaration |
gi |
Go to implementation |
grr |
List references |
grn |
Rename symbol |
gra |
Code actions |
[d ]d |
Previous / Next diagnostic |
<C-w>d |
Open diagnostic float |
Essential editor navigation and window management mappings defined in lua/core/keymaps.lua.
| Type | Key | Mode | Action |
|---|---|---|---|
| π οΈ | <C-j> |
n, i, v | Move to the window below |
| π οΈ | <C-k> |
n, i, v | Move to the window above |
| π οΈ | <C-h> |
n, i, v | Move to the window on the left |
| π οΈ | <C-l> |
n, i, v | Move to the window on the right |
| π οΈ | <Leader><CR> |
n | Clear search highlight (:noh) |
Hotkey mappings provided or overridden by installed plugins. These enhance specific tool workflows.
| Type | Key | Action |
|---|---|---|
| π οΈ | <leader>nn |
Toggle NvimTree |
| π οΈ | <leader>no |
Open NvimTree |
| π οΈ | <leader>nc |
Close NvimTree |
| π οΈ | <leader>nr |
Refresh NvimTree |
| π¦ | g? |
Toggle Help |
| π¦ | <CR> |
Open |
| π¦ | o |
Open |
| π¦ | <Tab> |
Open Preview |
| π¦ | <C-v> |
Open: Vertical Split |
| π¦ | <C-x> |
Open: Horizontal Split |
| π¦ | <C-t> |
Open: New Tab |
| π¦ | <C-e> |
Open: In Place |
| π¦ | O |
Open: No Window Picker |
| π¦ | a |
Create File Or Directory |
| π¦ | d |
Delete |
| π¦ | D |
Trash |
| π¦ | r |
Rename |
| π¦ | e |
Rename: Basename |
| π¦ | u |
Rename: Full Path |
| π¦ | <C-r> |
Rename: Omit Filename |
| π¦ | x |
Cut |
| π¦ | c |
Copy |
| π¦ | p |
Paste |
| π¦ | y |
Copy Name |
| π¦ | Y |
Copy Relative Path |
| π¦ | gy |
Copy Absolute Path |
| π¦ | ge |
Copy Basename |
| π¦ | R |
Refresh |
| π¦ | - |
Up (Root to Parent) |
| π¦ | <C-]> |
CD (Root to Node) |
| π¦ | <BS> |
Close Directory |
| π¦ | P |
Parent Directory |
| π¦ | K |
First Sibling |
| π¦ | J |
Last Sibling |
| π¦ | > |
Next Sibling |
| π¦ | < |
Previous Sibling |
| π¦ | ]c |
Next Git Item |
| π¦ | [c |
Previous Git Item |
| π¦ | ]e |
Next Diagnostic |
| π¦ | [e |
Previous Diagnostic |
| π¦ | f |
Live Filter: Start |
| π¦ | F |
Live Filter: Clear |
| π¦ | H |
Toggle Filter: Dotfiles |
| π¦ | I |
Toggle Filter: Git Ignore |
| π¦ | U |
Toggle Filter: Hidden |
| π¦ | C |
Toggle Filter: Git Clean |
| π¦ | B |
Toggle Filter: No Buffer |
| π¦ | M |
Toggle Filter: No Bookmark |
| π¦ | L |
Toggle Group Empty |
| π¦ | E |
Expand All |
| π¦ | W |
Collapse All |
| π¦ | S |
Search |
| π¦ | s |
Run System |
| π¦ | . |
Run Command |
| π¦ | m |
Toggle Bookmark |
| π¦ | bmv |
Move Bookmarked |
| π¦ | bt |
Trash Bookmarked |
| π¦ | bd |
Delete Bookmarked |
| π¦ | q |
Close |
| π¦ | <C-k> |
Info |
| π¦ | <2-LeftMouse> |
Open |
| π¦ | <2-RightMouse> |
CD |
| Type | Key | Action |
|---|---|---|
| π οΈ | <leader>f |
Find Recent Files (MRU) |
| π οΈ | <leader>tf |
Find Files |
| π οΈ | <leader>tg |
Live Grep |
| π οΈ | <leader>tb |
Find Buffers |
| π οΈ | <leader>tt |
Find Help Tags |
| π οΈ | gd |
[G]oto [D]efinition (Default: Native LSP gd) |
| π οΈ | gr |
[G]oto [R]eferences (Default: Native LSP gr) |
| π οΈ | gi |
[G]oto [I]mplementation (Default: Native LSP gi) |
| π οΈ | <leader>ds |
[D]ocument [S]ymbols |
| π οΈ | <leader>tc |
[T]heme Picker (Persistent) |
| π¦ | ? |
Show mappings (while telescope is open) |
| π¦ | <CR> |
Confirm selection |
| π¦ | <C-x> |
Go to file selection as a split |
| π¦ | <C-v> |
Go to file selection as a vsplit |
| π¦ | <C-t> |
Go to a file in a new tab |
| π¦ | <Tab> |
Toggle selection and move to next |
| π¦ | <S-Tab> |
Toggle selection and move to prev |
| π¦ | <C-q> |
Send all to quickfix list |
| π¦ | <M-q> |
Send selected to quickfix list |
| Type | Key | Action |
|---|---|---|
| π οΈ | K |
LSP Hover information |
| π οΈ | gd |
LSP Go to Definition (Handled by Telescope) |
| π οΈ | gr |
LSP Go to References (Handled by Telescope) |
| π οΈ | <leader>ca |
LSP Code Action |
| Type | Key | Action |
|---|---|---|
| π οΈ | gD |
Go to Source Definition (Default: LSP Declaration) |
| π οΈ | <leader>co |
Organize Imports |
| π οΈ | <leader>rf |
Rename File |
| Type | Key | Action |
|---|---|---|
| π οΈ | <C-n> |
Find Under / Find Subword Under |
| π οΈ | \A |
Select All / Visual All (Default: <C-n>A) |
| π οΈ | \/ |
Start Regex Search / Visual Regex (Default: <C-n>/) |
| π οΈ | <C-Down> |
Add Cursor Down |
| π οΈ | <C-Up> |
Add Cursor Up |
| π οΈ | \' |
Add Cursor At Pos |
| π οΈ | \a |
Visual Add / Align |
| π οΈ | \f |
Visual Find |
| π οΈ | \c |
Visual Cursors / Case Setting |
| π οΈ | <Tab> |
Switch Mode |
| π οΈ | ] |
Find Next |
| π οΈ | [ |
Find Prev |
| π οΈ | } |
Goto Next |
| π οΈ | { |
Goto Prev |
| π οΈ | <C-f> |
Seek Next |
| π οΈ | <C-b> |
Seek Prev |
| π οΈ | q |
Skip Region |
| π οΈ | Q |
Remove Region |
| π οΈ | o |
Invert Direction |
| π οΈ | m |
Find Operator |
| π οΈ | S |
Surround |
| π οΈ | R |
Replace Pattern |
| π οΈ | ``` | Tools Menu |
| π οΈ | \" |
Show Registers |
| π οΈ | \w |
Toggle Whole Word |
| π οΈ | \t |
Transpose |
| π οΈ | \d |
Duplicate |
| π οΈ | \r |
Rewrite Last Search |
| π οΈ | \m |
Merge Regions |
| π οΈ | \s |
Split Regions / Visual Subtract |
| π οΈ | \q |
Remove Last Region |
| π οΈ | \C |
Case Conversion Menu |
| π οΈ | \S |
Search Menu |
| π οΈ | \z |
Run Normal |
| π οΈ | \Z |
Run Last Normal |
| π οΈ | \v |
Run Visual |
| π οΈ | \V |
Run Last Visual |
| π οΈ | \x |
Run Ex |
| π οΈ | \X |
Run Last Ex |
| π οΈ | \@ |
Run Macro |
| π οΈ | \< |
Align Char |
| π οΈ | \> |
Align Regex |
| π οΈ | \n |
Numbers |
| π οΈ | \N |
Numbers Append |
| π οΈ | \0n |
Zero Numbers |
| π οΈ | \0N |
Zero Numbers Append |
| π οΈ | \- |
Shrink |
| π οΈ | \+ |
Enlarge |
| π οΈ | \<BS> |
Toggle Block |
| π οΈ | \<CR> |
Toggle Single Region |
| π οΈ | \M |
Toggle Multiline |
| Type | Key | Mode | Action |
|---|---|---|---|
| π¦ | gcc |
n | Toggle line comment |
| π¦ | gbc |
n | Toggle block comment |
| π¦ | gc |
v | Toggle line comment (visual) |
| π¦ | gb |
v | Toggle block comment (visual) |
| π¦ | gco |
n | Insert comment below |
| π¦ | gcO |
n | Insert comment above |
| π¦ | gcA |
n | Insert comment at end of line |
| π¦ | gc{motion} |
n | Toggle line comment with motion |
| π¦ | gb{motion} |
n | Toggle block comment with motion |
| Type | Key | Action |
|---|---|---|
| π¦ | mx |
Set mark x |
| π¦ | m, |
Set next available mark |
| π¦ | m; |
Toggle next available mark at current line |
| π¦ | dmx |
Delete mark x |
| π¦ | dm- |
Delete all marks on line |
| π¦ | dm<space> |
Delete all marks in buffer |
| π¦ | m] |
Move to next mark |
| π¦ | m[ |
Move to previous mark |
| π¦ | m: |
Preview mark |
| π¦ | m[0-9] |
Add bookmark group 0-9 |
| π¦ | dm[0-9] |
Delete bookmarks in group 0-9 |
| π¦ | m} |
Move to next bookmark of same type |
| π¦ | m{ |
Move to previous bookmark of same type |
| π¦ | dm= |
Delete bookmark under cursor |
| Type | Key | Action |
|---|---|---|
| π¦ | ]t |
Next todo comment |
| π¦ | [t |
Previous todo comment |
| Type | Key | Action |
|---|---|---|
| π¦ | gf |
Follow link under cursor (Default: Native file gf) |
| π οΈ | <leader>ch |
Toggle check-box |
| π οΈ | <cr> |
Smart action (link/checkbox) |
| Type | Key | Action |
|---|---|---|
| π¦ | g? |
Show help |
| π¦ | s |
Stage file/hunk |
| π¦ | u |
Unstage file/hunk |
| π¦ | - |
Toggle stage/unstage |
| π¦ | U |
Unstage everything |
| π¦ | = |
Toggle inline diff |
| π¦ | > / < |
Insert/Remove inline diff |
| π¦ | I |
Patch (interactive add) |
| π¦ | cc |
Commit |
| π¦ | ca |
Amend commit |
| π¦ | ce |
Extend commit |
| π¦ | cw |
Reword commit |
| π¦ | cvc |
Verbose commit |
| π¦ | cf |
Fixup commit |
| π¦ | cz |
Stash |
| π¦ | cZ |
Stash (keep index) |
| π¦ | X |
Discard change |
| Type | Key | Action |
|---|---|---|
| π¦ | <tab> |
Next file |
| π¦ | <s-tab> |
Previous file |
| π οΈ | <leader>e |
Focus file panel |
| π οΈ | <leader>b |
Toggle file panel |
| π¦ | g? |
Help (while open) |
| π¦ | gf |
Open file in prev tabpage |
| π¦ | <C-w><C-f> |
Open file in new split |
| π¦ | <C-w>gf |
Open file in new tabpage |
| π¦ | [x |
Previous conflict |
| π¦ | ]x |
Next conflict |
| π¦ | <leader>co |
Choose OURS |
| π¦ | <leader>ct |
Choose THEIRS |
| π¦ | <leader>cb |
Choose BASE |
| π¦ | <leader>ca |
Choose ALL |
| π¦ | dx |
Delete conflict region |
| Type | Key | Action |
|---|---|---|
| π¦ | g? |
Toggle help |
| π¦ | <CR> |
Toggle expand / view log |
| π¦ | i |
Install |
| π¦ | u |
Update |
| π¦ | c |
Check for update |
| π¦ | U |
Update all |
| π¦ | C |
Check all |
| π¦ | X |
Uninstall |
| π¦ | <C-f> |
Apply language filter |
| π¦ | <C-c> |
Cancel installation |
| Type | Key | Mode | Action |
|---|---|---|---|
| π¦ | <C-s> |
i | Send prompt |
| π¦ | <CR> |
n | Send prompt |
| π¦ | ga |
n | Show actions |
| π¦ | gc |
n | Clear chat |
| π¦ | gs |
n | Stop generation |
| π¦ | q |
n | Close chat |
| π¦ | s |
n | Save chat to file |
| π¦ | ] |
n | Next Header |
| π¦ | [ |
n | Previous Header |
| π¦ | gf |
n | Fold |
| Type | Key | Action |
|---|---|---|
| π¦ | <M-e> |
FastWrap |
| Type | Key | Action |
|---|---|---|
| π¦ | / or ? |
Preview regex explanations during search |
| Type | Key | Action |
|---|---|---|
| π‘ | K |
RustLsp hover actions |
| π‘ | <leader>a |
RustLsp codeAction |
| π‘ | <leader>e |
RustLsp explainError |
| π‘ | <leader>r |
RustLsp runnables |
| π‘ | <leader>d |
RustLsp debuggables |
| Type | Key | Action |
|---|---|---|
| π‘ | <leader>cct |
Crates Toggle |
| π‘ | <leader>ccr |
Crates Reload |
| π‘ | <leader>ccv |
Crates Show Versions |
| π‘ | <leader>ccf |
Crates Show Features |
| π‘ | <leader>ccu |
Crates Update Crate |
| π‘ | <leader>cca |
Crates Update All |
| π‘ | <leader>ccy |
Crates Upgrade Crate |
| π‘ | <leader>ccx |
Crates Upgrade All |