Home

Awesome

Rafael Bodill's Neovim Config

Lean mean Neovim machine, 30-45ms startup time. Works best with Neovim β‰₯0.10

:gear: See "Extending" for customizing configuration and adding plugins.

:triangular_flag_on_post: git tag vim tracks the last revision using Dein.nvim and plugins.yaml. Since then, the entire configuration has been rewritten to use lazy.nvim and Lua.

I encourage you to fork this repo and create your own experience. Learn how to tweak and change Neovim to the way YOU like it. This is my cultivation of years of tweaking, use it as a git remote and stay in-touch with upstream for reference or cherry-picking.

<details> <summary> <strong>Table of Contents</strong> <small><i>(πŸ”Ž Click to expand/collapse)</i></small> </summary> <!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc --> </details>

Features

Screenshot

Vim screenshot

Prerequisites

Optional, but highly recommended:

Install

  1. Let's clone this repo! Clone to ~/.config/nvim

    mkdir -p ~/.config
    git clone git@github.com:rafi/vim-config.git ~/.config/nvim
    cd ~/.config/nvim
    
  2. Run nvim (will install all plugins the first time).

    It's highly recommended running :checkhealth to ensure your system is healthy and meet the requirements.

  3. Inside Neovim, run :LazyExtras and use <kbd>x</kbd> to install extras.

Enjoy! :smile:

Install LSP, DAP, Linters, Formatters

Use :Mason (or <kbd>Space</kbd>+<kbd>mm</kbd>) to install and manage LSP servers, DAP servers, linters and formatters. See :h mason.nvim and williamboman/mason.nvim for more information.

Language-Server Protocol (LSP)

You can install LSP servers using :Mason UI, or :MasonInstall <name>, or :LspInstall <name> (use <kbd>Tab</kbd> to list available servers). See Mason's PACKAGES.md for the official list, and the Language server mapping list. You can also view at :h mason-lspconfig-server-map

You'll need utilities like npm and curl to install some extensions, see requirements (or :h mason-requirements) for more information.

See lua/rafi/plugins/lsp/init.lua for custom key-mappings and configuration for some language-servers.

Recommended LSP

:MasonInstall ansible-language-server bash-language-server css-lsp
:MasonInstall dockerfile-language-server gopls html-lsp json-lsp
:MasonInstall lua-language-server marksman pyright sqlls
:MasonInstall svelte-language-server typescript-language-server
:MasonInstall tailwindcss-language-server
:MasonInstall vim-language-server yaml-language-server

and more…

Recommended Linters

:MasonInstall vint shellcheck editorconfig-checker flake8 gitlint hadolint
:MasonInstall markdownlint mypy selene shellharden write-good yamllint

Recommended Formatters

:MasonInstall black fixjson gofumpt golines isort
:MasonInstall shfmt sql-formatter stylua

Recommended Fonts

On macOS with Homebrew, choose one of the Nerd Fonts, for example, here are some popular fonts:

brew tap homebrew/cask-fonts
brew search nerd-font
brew install --cask font-victor-mono-nerd-font
brew install --cask font-iosevka-nerd-font-mono
brew install --cask font-hack-nerd-font
brew install --cask font-fira-code

Upgrade

To upgrade packages and plugins:

To update Neovim configuration from my repo:

git pull --ff --ff-only

Structure

Extending

Extend: Config

Fork this repository and create a directory lua/config with one or more of these files: (Optional)

Adding plugins or override existing options:

Extend: Plugins

Install "extras" plugins using :LazyExtras and installing with <kbd>x</kbd>. This saves choices in lazyvim.json which you can also edit manually, here's a recommended starting point:

{
  "extras": [
    "lazyvim.plugins.extras.coding.copilot",
    "lazyvim.plugins.extras.dap.core",
    "lazyvim.plugins.extras.dap.nlua",
    "lazyvim.plugins.extras.lang.docker",
    "lazyvim.plugins.extras.lang.json",
    "lazyvim.plugins.extras.lang.typescript",
    "lazyvim.plugins.extras.lang.yaml",
    "lazyvim.plugins.extras.test.core",
    "rafi.plugins.extras.coding.align",
    "rafi.plugins.extras.editor.harpoon2",
    "rafi.plugins.extras.git.cmp-git",
    "rafi.plugins.extras.lang.ansible",
    "rafi.plugins.extras.lang.go",
    "rafi.plugins.extras.lang.helm",
    "rafi.plugins.extras.lang.markdown",
    "rafi.plugins.extras.lang.python",
    "rafi.plugins.extras.lang.tmux",
    "rafi.plugins.extras.ui.deadcolumn"
  ],
  "news": [],
  "version": 2
}

For installing/overriding/disabling plugins, create a lua/plugins/foo.lua file (or lua/plugins/foo/bar.lua or simply lua/plugins.lua) and manage your own plugin collection. You can add or override existing plugins' options, or just disable them all-together. Here's an example:

return {

  -- Disable default tabline
  { 'akinsho/bufferline.nvim', enabled = false },

  -- And choose a different one!
  -- { 'itchyny/lightline.vim' },
  -- { 'vim-airline/vim-airline' },
  -- { 'glepnir/galaxyline.nvim' },
  -- { 'glepnir/spaceline.vim' },
  -- { 'liuchengxu/eleline.vim' },

  -- Enable GitHub's Copilot
  { import = 'lazyvim.plugins.extras.coding.copilot' },

  -- Enable incline, displaying filenames on each window
  { import = 'rafi.plugins.extras.ui.incline' },

  -- Disable built-in plugins
  { 'shadmansaleh/lualine.nvim', enabled = false },
  { 'limorris/persisted.nvim', enabled = false },

  -- Change built-in plugins' options
  {
    'nvim-treesitter/nvim-treesitter',
    opts = {
      ensure_installed = {
        'bash', 'comment', 'css', 'diff', 'dockerfile', 'fennel', 'fish',
        'gitcommit', 'gitignore', 'gitattributes', 'git_rebase', 'go', 'gomod',
        'gosum', 'gowork', 'graphql', 'hcl', 'html', 'javascript', 'jsdoc',
        'json', 'json5', 'jsonc', 'jsonnet', 'lua', 'make', 'markdown',
        'markdown_inline', 'nix', 'perl', 'php', 'pug', 'python', 'regex',
        'rst', 'ruby', 'rust', 'scss', 'sql', 'svelte', 'terraform', 'toml',
        'tsx', 'typescript', 'vim', 'vimdoc', 'vue', 'yaml', 'zig',
      },
    },
  },

}

Extend: Defaults

  1. Create lua/config/options.lua and set any Neovim/RafiVim/LazyVim features: (Default values are shown)

    -- Auto format on-save
    vim.g.autoformat = false
    
    -- Elite-mode (hjkl mode. arrow-keys resize window)
    vim.g.elite_mode = false
    
    -- When enabled, 'q' closes any window
    vim.g.window_q_mapping = true
    
  2. You can override LazyVim options. For example in lua/plugins/core.lua:

    return {
      {
        'LazyVim/LazyVim',
        opts = {
          icons = {
            diagnostics = {
              Error = '',
              Warn  = '',
              Info  = '',
            },
            status = {
              diagnostics = {
                error = 'E',
                warn  = 'W',
                info  = 'I',
                hint  = 'H',
              },
            },
          },
        },
      },
    }
    
  3. You can override lazy.nvim (package-manager) global options. Create lua/config/setup.lua and return this function:

    • lazy_opts() β€” override LazyVim setup options

    For example:

    local M = {}
    
    ---@return table
    function M.lazy_opts()
      return {
        -- See https://github.com/folke/lazy.nvim/#%EF%B8%8F-configuration
        concurrency = jit.os:find('Windows') and (vim.uv.available_parallelism() * 2) or nil,
      }
    end
    
    return M
    
  4. You can completely override lazy.nvim setup by creating lua/config/lazy.lua to replace lua/rafi/config/lazy.lua with your own procedure.

Extend: LSP Settings

Override server options with nvim-lspconfig plugin, for example:

{
  'neovim/nvim-lspconfig',
  opts = {
    servers = {
      yamlls = {
        filetypes = { 'yaml', 'yaml.ansible', 'yaml.docker-compose' },
      },
      lua_ls = {
        settings = {
          Lua = {
            workspace = { checkThirdParty = false },
            completion = { callSnippet = 'Replace' },
          },
        },
      },
    },
  }
}

Plugin Highlights

Note that 95% of the plugins are lazy-loaded.

Plugins Included

<details open> <summary><strong>List of plugins</strong> <small><i>(πŸ”Ž Click to expand/collapse)</i></small></summary>

Completion & Code-Analysis

NameDescription
neovim/nvim-lspconfigQuickstart configurations for the Nvim LSP client
williamboman/mason.nvimPortable package manager for Neovim
williamboman/mason-lspconfig.nvimMason extension for easier lspconfig integration
stevearc/conform.nvimLightweight yet powerful formatter plugin
mfussenegger/nvim-lintAsynchronous linter plugin

Editor Plugins

NameDescription
folke/lazy.nvimModern plugin manager for Neovim
nmac427/guess-indent.nvimAutomatic indentation style detection
tweekmonster/helpful.vimDisplay vim version numbers in docs
lambdalisue/suda.vimAn alternative sudo for Vim and Neovim
folke/persistence.nvimSimple lua plugin for automated session management
mbbill/undotreeUltimate undo history visualizer
folke/flash.nvimSearch labels, enhanced character motions
haya14busa/vim-edgemotionJump to the edge of block
folke/zen-mode.nvimDistraction-free coding for Neovim
folke/todo-comments.nvimHighlight, list and search todo comments in your projects
folke/trouble.nvimPretty lists to help you solve all code diagnostics
akinsho/toggleterm.nvimPersist and toggle multiple terminals
[hedyhli/outline.nvim]Code outline sidebar powered by LSP
s1n7ax/nvim-window-pickerFancy Window picker
dnlhc/glance.nvimPretty window for navigating LSP locations
MagicDuck/grug-far.nvimSearch/replace in multiple files

Coding Plugins

NameDescription
hrsh7th/nvim-cmpCompletion plugin for neovim written in Lua
hrsh7th/cmp-nvim-lspnvim-cmp source for neovim builtin LSP client
hrsh7th/cmp-buffernvim-cmp source for buffer words
hrsh7th/cmp-pathnvim-cmp source for path
hrsh7th/cmp-emojinvim-cmp source for emoji
rafamadriz/friendly-snippetsPreconfigured snippets for different languages
windwp/nvim-autopairsPowerful auto-pair plugin with multiple characters support
echasnovski/mini.surroundFast and feature-rich surround actions
JoosepAlviste/nvim-ts-context-commentstringSet the commentstring based on the cursor location
numToStr/Comment.nvimPowerful line and block-wise commenting
echasnovski/mini.splitjoinSplit and join arguments
echasnovski/mini.trailspaceTrailing whitespace highlight and remove
AndrewRadev/linediff.vimPerform diffs on blocks of code
AndrewRadev/dsf.vimDelete surrounding function call
echasnovski/mini.aiExtend and create a/i textobjects
folke/lazydev.nvimFaster LuaLS setup
Bilal2453/luvit-metaManage libuv types with lazy

Colorscheme Plugins

NameDescription
rafi/theme-loader.nvimUse last-used colorscheme
rafi/neo-hybrid.vimModern dark colorscheme, hybrid improved
rafi/awesome-colorschemesAwesome color-schemes

Git Plugins

NameDescription
lewis6991/gitsigns.nvimGit signs written in pure lua
sindrets/diffview.nvimTabpage interface for cycling through diffs
NeogitOrg/neogitMagit clone for Neovim
FabijanZulj/blame.nvimGit blame visualizer
rhysd/git-messenger.vimReveal the commit messages under the cursor
ruifm/gitlinker.nvimBrowse git repositories
rhysd/committia.vimPleasant editing on Git commit messages

Misc Plugins

NameDescription
hoob3rt/lualine.nvimStatusline plugin written in pure lua
nvim-neo-tree/neo-tree.nvimFile explorer written in Lua
nvim-telescope/telescope.nvimFind, Filter, Preview, Pick. All lua.
jvgrootveld/telescope-zoxideTelescope extension for Zoxide
rafi/telescope-thesaurus.nvimBrowse synonyms for a word
nvim-lua/plenary.nvimLua functions library

Treesitter & Syntax

NameDescription
nvim-treesitter/nvim-treesitterNvim Treesitter configurations and abstraction layer
nvim-treesitter/nvim-treesitter-textobjectsTextobjects using treesitter queries
RRethy/nvim-treesitter-endwiseWisely add "end" in various filetypes
windwp/nvim-ts-autotagUse treesitter to auto close and auto rename html tag
andymass/vim-matchupModern matchit and matchparen
iloginow/vim-stylusBetter vim plugin for stylus
mustache/vim-mustache-handlebarsMustache and handlebars syntax
lifepillar/pgsql.vimPostgreSQL syntax and indent
MTDL9/vim-log-highlightingSyntax highlighting for generic log files
reasonml-editor/vim-reason-plusReason syntax and indent

UI Plugins

NameDescription
echasnovski/mini.iconsIcon provider
MunifTanjim/nui.nvimUI Component Library
rcarriga/nvim-notifyFancy notification manager
stevearc/dressing.nvimImprove the default vim-ui interfaces
akinsho/bufferline.nvimSnazzy tab/bufferline
folke/noice.nvimReplaces the UI for messages, cmdline and the popupmenu
SmiteshP/nvim-navicShows your current code context in winbar/statusline
chentau/marks.nvimInteracting with and manipulating marks
lukas-reineke/indent-blankline.nvimVisually display indent levels
echasnovski/mini.indentscopeVisualize and operate on indent scope
folke/which-key.nvimCreate key bindings that stick
tenxsoydev/tabs-vs-spaces.nvimHint and fix deviating indentation
t9md/vim-quickhlHighlight words quickly
kevinhwang91/nvim-bqfBetter quickfix window
</details>

Extra Plugins

<details open> <summary><strong>List of extras</strong> <small><i>(πŸ”Ž Click to expand/collapse)</i></small></summary>

You can view all LazyVim's extras at www.lazyvim.org/extras.

These plugins aren't enabled by default. You'll have to install them using :LazyExtras and installing with <kbd>x</kbd>. (Or import them using specs) See Extend: Plugins on how to add plugins and examples.

Following are extra-extras available with Rafi's Neovim on-top of LazyVim's:

Extra Plugins: Coding

Spec: rafi.plugins.extras.coding.<name>

NameRepositoryDescription
alignechasnovski/mini.alignAlign text interactively
chainsawchrisgrieser/nvim-chainsawCreate log statements on the fly
editorconfigsgur/vim-editorconfigEditorConfig plugin written entirely in Vimscript
emmetmattn/emmet-vimProvides support for expanding abbreviations alΓ‘ emmet
luasnipL3MON4D3/LuaSnip saadparwaiz1/cmp_luasnipSnippet Engine and cmp source
mini-pairsechasnovski/mini.pairsAutomatically manage character pairs
neogendanymat/neogenAnnotation generator
sandwichmachakann/vim-sandwichSearch, select, and edit sandwich text objects

Extra Plugins: Colorscheme

Spec: rafi.plugins.extras.colorscheme.<name>

NameRepositoryDescription
nordicAlexvZyl/nordic.nvimNord for Neovim, but warmer and darker
tokyonightfolke/tokyonight.nvimClean, dark Neovim theme
kanagawarebelot/kanagawa.nvimInspired by the colors of the famous painting by Katsushika Hokusai
onedarkproolimorris/onedarkpro.nvimOneDarkPro theme
nightfoxEdenEast/nightfox.nvimHighly customizable theme
oxocarbonnyoom-engineering/oxocarbon.nvimDark and light theme inspired by IBM Carbon
bambooribru17/bamboo.nvimWarm green theme
catppuccincatppuccin/nvimSoothing pastel theme

Extra Plugins: Editor

Spec: rafi.plugins.extras.editor.<name>

NameRepositoryDescription
anyjumppechorin/any-jump.vimJump to any definition and references without overhead
flybufglepnir/flybuf.nvimList buffers in a float window
harpoonThePrimeagen/harpoonMarks for navigating your project
mini-visitsechasnovski/mini.visitsTrack and reuse file system visits
restrest-nvim/rest.nvimFast Neovim http client written in Lua
sidebarsidebar-nvim/sidebar.nvimGeneric and modular lua sidebar
ufokevinhwang91/nvim-ufoMake folds look modern and keep a high performance

Extra Plugins: Git

Spec: rafi.plugins.extras.git.<name>

NameRepositoryDescription
cmp-gitpetertriho/cmp-gitGit source for nvim-cmp
fugitivetpope/vim-fugitiveGit client, including junegunn/gv.vim

Extra Plugins: Lang

Spec: rafi.plugins.extras.lang.<name>

NameDescription
ansibleimports lazyvim.plugins.extras.lang.ansible, add syntax and pearofducks/ansible-vim
goimports lazyvim.plugins.extras.lang.go, add tools, patterns, etc.
helmimports lazyvim.plugins.extras.lang.helm, add filetype patterns
kubernetesimports lazyvim.plugins.extras.lang.yaml, add filetype patterns and ramilito/kubectl.nvim
markdownimports lazyvim.plugins.extras.lang.markdown, disable headlines, add mzlogin/vim-markdown-toc
pythonimports lazyvim.plugins.extras.lang.python, add syntax and filetype patterns
tmuxsyntax, completion andersevenrud/cmp-tmux, keymaps christoomey/tmux-navigator

Extra Plugins: LSP

Spec: rafi.plugins.extras.lsp.<name>

KeyNameDescription
gtdhrsh7th/nvim-gtdLSP's go-to definition plugin
lightbulbkosayoda/nvim-lightbulbVSCode πŸ’‘ for neovim's built-in LSP
yaml-companionyaml-companion.nvimGet, set and autodetect YAML schemas in your buffers

Extra Plugins: Org

Spec: rafi.plugins.extras.org.<name>

KeyNameDescription
calendaritchyny/calendar.vimCalendar application
kiwiserenevoid/kiwi.nvimStripped down VimWiki
telekastenrenerocksai/telekasten.nvimManage text-based, markdown zettelkasten or wiki with telescope
vimwikivimwiki/vimwikiPersonal Wiki for Vim
zk-nvimzk-org/zk-nvimExtension for the zk plain text note-taking assistant

Extra Plugins: Treesitter

Spec: rafi.plugins.extras.treesitter.<name>

KeyNameDescription
treesjWansmer/treesjSplitting and joining blocks of code

Extra Plugins: UI

Spec: rafi.plugins.extras.ui.<name>

KeyNameDescription
alphagoolord/alpha-nvimFast and fully programmable greeter
barbecueutilyre/barbecue.nvimVS Code like winbar
bookmarkstomasky/bookmarks.nvimBookmarks plugin with global file store
cccuga-rosa/ccc.nvimSuper powerful color picker/colorizer plugin
cursorworditchyny/cursorwordUnderlines word under cursor
cybughillb/cybu.nvimCycle buffers with a customizable notification window
deadcolumnBekaboo/deadcolumn.nvimShow colorcolumn dynamically
goto-previewrmagatti/goto-previewPreview definitions using floating windows
headlineslukas-reineke/headlines.nvimAdds horizontal highlights for headlines and code background.
illuminateRRethy/vim-illuminateHighlights other uses of the word under the cursor
inclineb0o/incline.nvimFloating statuslines
markschentoast/marks.nvimInteracting with and manipulating marks
mini-clueechasnovski/mini.clueShow next key clues
mini-mapechasnovski/mini.mapWindow with buffer text overview, scrollbar and highlights
symbols-outlinesimrat39/symbols-outline.nvimTree like view for symbols using LSP

LazyVim Extras

LazyVim is imported in specs (see lua/rafi/config/lazy.lua) Therefore, you can import any of the "Extras" plugins defined at LazyVim/LazyVim and documented in lazyvim.org.

These are only highlights:

Language

DAP (Debugging)

Test

</details>

Custom Key-mappings

Note that,

<details open> <summary> <strong>Key-mappings</strong> <small><i>(πŸ”Ž Click to expand/collapse)</i></small> </summary> <center>Modes: 𝐍=normal 𝐕=visual 𝐒=select 𝐈=insert 𝐎=operator 𝐂=command</center>

Navigation

KeyModeActionPlugin or Mapping
<kbd>j</kbd> / <kbd>k</kbd>𝐍 𝐕Cursor moves through display-lines<small>g j/k</small>
<kbd>gj</kbd> / <kbd>gk</kbd>𝐍 𝐕 𝐒Jump to edge upward/downward<small>haya14busa/vim-edgemotion</small>
<kbd>gh</kbd> / <kbd>gl</kbd>𝐍 𝐕Easier line-wise movement<small>g^ g$</small>
<kbd>zl</kbd> / <kbd>zh</kbd>𝐍Scroll horizontally and vertically wider<small>z4 l/h</small>
<kbd>Ctrl</kbd>+<kbd>j</kbd>𝐍Move to split below<small><C-w>j or christoomey/tmux-navigator</small>
<kbd>Ctrl</kbd>+<kbd>k</kbd>𝐍Move to upper split<small><C-w>k or christoomey/tmux-navigator</small>
<kbd>Ctrl</kbd>+<kbd>h</kbd>𝐍Move to left split<small><C-w>h or christoomey/tmux-navigator</small>
<kbd>Ctrl</kbd>+<kbd>l</kbd>𝐍Move to right split<small><C-w>l or christoomey/tmux-navigator</small>
<kbd>Return</kbd>𝐍Toggle fold under cursor<small>za</small>
<kbd>Shift</kbd>+<kbd>Return</kbd>𝐍Focus the current fold by closing all others<small>zMzv</small>
<kbd>Ctrl</kbd>+<kbd>f</kbd>𝐂Move cursor forwards in command<kbd>Right</kbd>
<kbd>Ctrl</kbd>+<kbd>b</kbd>𝐂Move cursor backwards in command<kbd>Left</kbd>
<kbd>Ctrl</kbd>+<kbd>h</kbd>𝐂Move cursor to the beginning in command<kbd>Home</kbd>
<kbd>Ctrl</kbd>+<kbd>l</kbd>𝐂Move cursor to the end in command<kbd>End</kbd>
<kbd>Ctrl</kbd>+<kbd>Tab</kbd>𝐍Go to next tab<small>:tabnext</small>
<kbd>Ctrl</kbd>+<kbd>Shift</kbd><kbd>Tab</kbd>𝐍Go to previous tab<small>:tabprevious</small>
<kbd>Alt</kbd>+<kbd>j</kbd> or <kbd>]</kbd>𝐍Go to next tab<small>:tabnext</small>
<kbd>Alt</kbd>+<kbd>k</kbd> or <kbd>[</kbd>𝐍Go to previous tab<small>:tabprevious</small>
<kbd>Alt</kbd>+<kbd>{</kbd>𝐍Move tab backward<small>:-tabmove</small>
<kbd>Alt</kbd>+<kbd>}</kbd>𝐍Move tab forward<small>:+tabmove</small>

Selection

KeyModeActionPlugin or Mapping
<kbd>Space</kbd>+<kbd>Space</kbd>𝐍 𝐕Toggle visual-line mode<small>V / <kbd>Escape</kbd></small>
<kbd>v</kbd> / <kbd>V</kbd>𝐕Increment/shrink selection<small>nvim-treesitter</small>
<kbd>vsp</kbd>𝐍Select last paste<small>config/keymaps.lua</small>
<kbd>sg</kbd>𝐕Replace within selected area<small>config/keymaps.lua</small>
<kbd>Ctrl</kbd>+<kbd>r</kbd>𝐕Replace selection with step-by-step confirmation<small>config/keymaps.lua</small>
<kbd>></kbd> / <kbd><</kbd>𝐕Indent and re-select<small>config/keymaps.lua</small>
<kbd>Tab</kbd> / <kbd>Shift</kbd>+<kbd>Tab</kbd>𝐕Indent and re-select<small>config/keymaps.lua</small>
<kbd>I</kbd> / <kbd>gI</kbd> / <kbd>A</kbd>𝐕Force blockwise operation<small>config/keymaps.lua</small>

Jump To

KeyModeActionPlugin or Mapping
<kbd>],</kbd> or <kbd>[,</kbd>𝐍Next/previous parameter<small>akinsho/bufferline.nvim</small>
<kbd>]q</kbd> or <kbd>[q</kbd>𝐍Next/previous on quick-fix<small>:cnext / :cprev</small>
<kbd>]a</kbd> or <kbd>[a</kbd>𝐍Next/previous on location-list<small>:lnext / :lprev</small>
<kbd>]d</kbd> or <kbd>[d</kbd>𝐍Next/previous diagnostics<small>config/keymaps.lua</small>
<kbd>]e</kbd> or <kbd>[e</kbd>𝐍Next/previous error<small>config/keymaps.lua</small>
<kbd>]w</kbd> or <kbd>[w</kbd>𝐍Next/previous warning<small>config/keymaps.lua</small>
<kbd>]b</kbd> or <kbd>[b</kbd>𝐍Next/previous buffer<small>akinsho/bufferline.nvim</small>
<kbd>]f</kbd> or <kbd>[f</kbd>𝐍Next/previous function start<small>echasnovski/mini.ai</small>
<kbd>]F</kbd> or <kbd>[F</kbd>𝐍Next/previous function end<small>echasnovski/mini.ai</small>
<kbd>]c</kbd> or <kbd>[c</kbd>𝐍Next/previous class start<small>echasnovski/mini.ai</small>
<kbd>]C</kbd> or <kbd>[C</kbd>𝐍Next/previous class end<small>echasnovski/mini.ai</small>
<kbd>]m</kbd> or <kbd>[m</kbd>𝐍Next/previous method start<small>echasnovski/mini.ai</small>
<kbd>]M</kbd> or <kbd>[M</kbd>𝐍Next/previous method end<small>echasnovski/mini.ai</small>
<kbd>]g</kbd> or <kbd>[g</kbd>𝐍Next/previous Git hunk<small>lewis6991/gitsigns.nvim</small>
<kbd>]i</kbd> or <kbd>[i</kbd>𝐍Next/previous indent scope<small>echasnovski/mini.indentscope</small>
<kbd>]t</kbd> or <kbd>[t</kbd>𝐍Next/previous TODO<small>folke/todo-comments.nvim</small>
<kbd>]z</kbd> or <kbd>[z</kbd>𝐍Next/previous whitespace error<small>config/keymaps.lua</small>

Buffers

KeyModeActionPlugin or Mapping
<kbd>Space</kbd>+<kbd>bd</kbd>𝐍Delete buffer<small>LazyVim.ui.bufremove</small>

Clipboard

KeyModeActionPlugin or Mapping
<kbd>p</kbd> or <kbd>P</kbd>𝐕Paste without yank<small>:let @+=@0</small>
<kbd>Space</kbd>+<kbd>y</kbd>𝐍Copy relative file-path to clipboard<small>config/keymaps.lua</small>
<kbd>Space</kbd>+<kbd>Y</kbd>𝐍Copy absolute file-path to clipboard<small>config/keymaps.lua</small>

Auto-Completion

KeyModeActionPlugin or Mapping
<kbd>Tab</kbd> / <kbd>Shift-Tab</kbd>𝐈 𝐒Navigate/open completion-menu<small>nvim-cmp</small>
<kbd>Tab</kbd> / <kbd>Shift-Tab</kbd>𝐈 𝐒Navigate snippet placeholders<small>L3MON4D3/LuaSnip</small>
<kbd>Ctrl</kbd>+<kbd>Space</kbd>𝐈Open completion menu<small>nvim-cmp</small>
<kbd>Enter</kbd>𝐈Select completion item or expand snippet<small>nvim-cmp</small>
<kbd>Shift</kbd>+<kbd>Enter</kbd>𝐈Select and replace with completion item<small>nvim-cmp</small>
<kbd>Ctrl</kbd>+<kbd>n</kbd>/<kbd>p</kbd>𝐈Movement in completion pop-up<small>nvim-cmp</small>
<kbd>Ctrl</kbd>+<kbd>f</kbd>/<kbd>b</kbd>𝐈Scroll documentation<small>nvim-cmp</small>
<kbd>Ctrl</kbd>+<kbd>d</kbd>/<kbd>u</kbd>𝐈Scroll candidates<small>nvim-cmp</small>
<kbd>Ctrl</kbd>+<kbd>e</kbd>𝐈Abort selection and close pop-up<small>nvim-cmp</small>
<kbd>Ctrl</kbd>+<kbd>l</kbd>𝐈Expand snippet at cursor<small>L3MON4D3/LuaSnip</small>
<kbd>Ctrl</kbd>+<kbd>c</kbd>𝐈Close completion menu<small>nvim-cmp</small>

LSP

KeyModeActionPlugin or Mapping
<kbd>gr</kbd>𝐍Go to references<small>plugins/lsp/keymaps.lua</small>
<kbd>gR</kbd>𝐍List references with Trouble<small>folke/trouble.nvim</small>
<kbd>gd</kbd>𝐍Go to definition<small>plugins/lsp/keymaps.lua</small>
<kbd>gD</kbd>𝐍Go to declaration<small>plugins/lsp/keymaps.lua</small>
<kbd>gI</kbd>𝐍Go to implementation<small>plugins/lsp/keymaps.lua</small>
<kbd>gy</kbd>𝐍Go to type definition<small>plugins/lsp/keymaps.lua</small>
<kbd>K</kbd>𝐍Show hover help or collapsed fold<small>plugins/lsp/keymaps.lua</small>
<kbd>gK</kbd>𝐍Show signature help<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>cl</kbd>𝐍Open LSP info window<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>cr</kbd>𝐍Rename<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>ce</kbd>𝐍Open diagnostics window<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>co</kbd>𝐍Formatter menu selection<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>ca</kbd>𝐍 𝐕Code action<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>cA</kbd>𝐍Source action<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>chi</kbd>𝐍LSP incoming calls<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>cho</kbd>𝐍LSP outgoing calls<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>ud</kbd>𝐍Toggle buffer diagnostics<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>fwa</kbd>𝐍Add workspace folder<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>fwr</kbd>𝐍Remove workspace folder<small>plugins/lsp/keymaps.lua</small>
<kbd>Space</kbd> <kbd>fwl</kbd>𝐍List workspace folders<small>plugins/lsp/keymaps.lua</small>
<kbd>gpd</kbd>𝐍Glance definitions<small>dnlhc/glance.nvim</small>
<kbd>gpr</kbd>𝐍Glance references<small>dnlhc/glance.nvim</small>
<kbd>gpy</kbd>𝐍Glance type definitions<small>dnlhc/glance.nvim</small>
<kbd>gpi</kbd>𝐍Glance implementations<small>dnlhc/glance.nvim</small>

Diagnostics

KeyModeActionPlugin or Mapping
<kbd>Space</kbd> <kbd>xt</kbd>𝐍List TODO with Trouble<small>folke/todo-comments.nvim</small>
<kbd>Space</kbd> <kbd>xT</kbd>𝐍List TODO/FIXME with Trouble<small>folke/todo-comments.nvim</small>
<kbd>Space</kbd> <kbd>st</kbd>𝐍Select TODO with Telescope<small>folke/todo-comments.nvim</small>
<kbd>Space</kbd> <kbd>sT</kbd>𝐍Select TODO/FIXME with Telescope<small>folke/todo-comments.nvim</small>
<kbd>Space</kbd> <kbd>xx</kbd>𝐍Toggle Trouble<small>folke/trouble.nvim</small>
<kbd>Space</kbd> <kbd>xd</kbd>𝐍Toggle Trouble document<small>folke/trouble.nvim</small>
<kbd>Space</kbd> <kbd>xw</kbd>𝐍Toggle Trouble workspace<small>folke/trouble.nvim</small>
<kbd>Space</kbd> <kbd>xq</kbd>𝐍Toggle Quickfix via Trouble<small>folke/trouble.nvim</small>
<kbd>Space</kbd> <kbd>xl</kbd>𝐍Toggle Locationlist via Trouble<small>folke/trouble.nvim</small>

Coding

KeyModeActionPlugin or Mapping
<kbd>Ctrl</kbd>+<kbd>q</kbd>𝐍Start recording macro<small>q</small>
<kbd>Space</kbd> <kbd>cf</kbd>𝐍 𝐕Format<small>[plugins/formatting.lua]</small>
<kbd>Space</kbd> <kbd>cF</kbd>𝐍 𝐕Format injected langs<small>[plugins/formatting.lua]</small>
<kbd>Space</kbd> <kbd>cc</kbd>𝐍Generate doc annotations<small>danymat/neogen</small>
<kbd>Shift</kbd>+<kbd>Return</kbd>𝐈Start new line from any cursor position<small><C-o>o</small>
<kbd>]</kbd> <kbd>Space</kbd>𝐍Add new line below<small>o<Esc></small>
<kbd>[</kbd> <kbd>Space</kbd>𝐍Add new line above<small>O<Esc></small>
<kbd>gc</kbd>𝐍 𝐕Comment prefix<small>numToStr/Comment.nvim</small>
<kbd>gcc</kbd>𝐍 𝐕Toggle comments<small>numToStr/Comment.nvim</small>
<kbd>Space</kbd>+<kbd>j</kbd> or <kbd>k</kbd>𝐍 𝐕Move lines down/up<small>:m …
<kbd>Space</kbd>+<kbd>v</kbd>𝐍 𝐕Toggle line-wise comments<small>numToStr/Comment.nvim</small>
<kbd>Space</kbd>+<kbd>V</kbd>𝐍 𝐕Toggle block-wise comments<small>numToStr/Comment.nvim</small>
<kbd>Space</kbd>+<kbd>dd</kbd>𝐍 𝐕Duplicate line or selection<small>config/keymaps.lua</small>
<kbd>Space</kbd>+<kbd>cw</kbd>𝐍Remove all spaces at EOL<small>echasnovski/mini.trailspace</small>
<kbd>sj</kbd> / <kbd>sk</kbd>𝐍Join/split arguments<small>echasnovski/mini.splitjoin</small>
<kbd>dsf</kbd> / <kbd>csf</kbd>𝐍Delete/change surrounding function call<small>AndrewRadev/dsf.vim</small>

Search, Substitute, Diff

KeyModeActionPlugin or Mapping
<kbd>*</kbd> / <kbd>#</kbd>𝐍 𝐕Search partial words<small>g* / g#</small>
<kbd>g*</kbd> / <kbd>g#</kbd>𝐍 𝐕Search whole-word forward/backward<small>* / #</small>
<kbd>Escape</kbd>𝐍Clear search highlight<small>:nohlsearch</small>
<kbd>Backspace</kbd>𝐍Match bracket<small>%</small>
<kbd>Space</kbd>+<kbd>bf</kbd>𝐍Diff current windows in tab<small>windo diffthis</small>
<kbd>ss</kbd>𝐍 𝐕 𝐎Flash jump<small>folke/flash.nvim</small>
<kbd>S</kbd>𝐍 𝐕 𝐎Flash treesitter<small>folke/flash.nvim</small>
<kbd>r</kbd>𝐎Flash remote<small>folke/flash.nvim</small>
<kbd>R</kbd>𝐕 𝐎Flash treesitter search<small>folke/flash.nvim</small>
<kbd>Ctrl</kbd>+<kbd>s</kbd>𝐂Toggle flash in search input<small>folke/flash.nvim</small>

Command & History

KeyModeActionPlugin or Mapping
<kbd>g!</kbd>𝐍Read vim command into buffer<small>:put=execute('⌴')</small>
<kbd>Ctrl</kbd>+<kbd>n</kbd> / <kbd>p</kbd>𝐂Switch history search pairs<kbd>↓</kbd> / <kbd>↑</kbd>
<kbd>↓</kbd> / <kbd>↑</kbd>𝐂Switch history search pairs<small>Ctrl n/p</small>

File Operations

KeyModeActionPlugin or Mapping
<kbd>Space</kbd>+<kbd>cd</kbd>𝐍Switch tab to the directory of current buffer<small>:tcd %:p:h</small>
<kbd>Space</kbd>+<kbd>w</kbd>𝐍Write buffer to file<small>:write</small>
<kbd>Ctrl</kbd>+<kbd>s</kbd>𝐍 𝐕 𝐂Write buffer to file<small>:write</small>

Editor UI

KeyModeActionPlugin or Mapping
<kbd>Space</kbd> <kbd>ub</kbd>𝐍Toggle structure scope in winbar<small>SmiteshP/nvim-navic</small>
<kbd>Space</kbd> <kbd>uf</kbd>𝐍Toggle format on Save<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>us</kbd>𝐍Toggle spell-checker<small>:setlocal spell!</small>
<kbd>Space</kbd> <kbd>ul</kbd>𝐍Toggle line numbers<small>:setlocal nonumber!</small>
<kbd>Space</kbd> <kbd>uL</kbd>𝐍Toggle relative line numbers<small>:setlocal norelativenumber!</small>
<kbd>Space</kbd> <kbd>uw</kbd>𝐍Toggle wrap<small>:setlocal wrap!</small> …
<kbd>Space</kbd> <kbd>ue</kbd>𝐍Toggle indentation lines<small>lukas-reineke/indent-blankline.nvim</small>
<kbd>Space</kbd> <kbd>uh</kbd>𝐍Toggle inlay-hints<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>ui</kbd>𝐍Show highlight groups for word<small>vim.show_pos</small>
<kbd>Space</kbd> <kbd>up</kbd>𝐍Disable auto-pairs<small>windwp/nvim-autopairs</small>
<kbd>Space</kbd> <kbd>ur</kbd>𝐍Redraw, clear hlsearch, and diff update<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>un</kbd>𝐍Dismiss all notifications<small>rcarriga/nvim-notify</small>

Window Management

KeyModeActionPlugin or Mapping
<kbd>q</kbd>𝐍Quit window (if last window, quit nvim)<small>:quit</small>
<kbd>Ctrl</kbd>+<kbd>x</kbd>𝐍Rotate window placement<small>C-w x</small>
<kbd>sp</kbd>𝐍Choose a window to edit<small>s1n7ax/nvim-window-picker</small>
<kbd>sw</kbd>𝐍Switch editing window with selected<small>s1n7ax/nvim-window-picker</small>
<kbd>sv</kbd>𝐍Horizontal split<small>:split</small>
<kbd>sg</kbd>𝐍Vertical split<small>:vsplit</small>
<kbd>st</kbd>𝐍Open new tab<small>:tabnew</small>
<kbd>so</kbd>𝐍Close other windows<small>:only</small>
<kbd>sb</kbd>𝐍Previous buffer<small>:b#</small>
<kbd>sc</kbd>𝐍Close current buffer<small>:close</small>
<kbd>sd</kbd>𝐍Delete buffer<small>:bdelete</small>
<kbd>sq</kbd>𝐍Quit window<small>:quit</small>
<kbd>sx</kbd>𝐍Delete buffer, leave blank window<small>:enew β”‚ bdelete</small>
<kbd>sz</kbd>𝐍Toggle window zoom<small>:vertical resize β”‚ resize</small>
<kbd>sh</kbd>𝐍Toggle colorscheme background=dark/light<small>:set background …

Plugins

KeyModeActionPlugin or Mapping
<kbd>;</kbd>+<kbd>c</kbd>𝐍Open context-menu<small>lua/rafi/util/contextmenu.lua</small>
<kbd>g</kbd><kbd>Ctrl</kbd>+<kbd>o</kbd>𝐍Navigate to previous file on jumplist<small>util/edit.lua</small>
<kbd>g</kbd><kbd>Ctrl</kbd>+<kbd>i</kbd>𝐍Navigate to next file on jumplist<small>util/edit.lua</small>
<kbd>Ctrl</kbd>+<kbd>/</kbd>𝐍Toggle terminal<small>akinsho/toggleterm.nvim</small>
<kbd>Space</kbd> <kbd>l</kbd>𝐍Open Lazy<small>folke/lazy.nvim</small>
<kbd>Space</kbd> <kbd>o</kbd>𝐍Open Outline side<small>[hedyhli/outline.nvim]</small>
<kbd>Space</kbd> <kbd>?</kbd>𝐍Open the macOS dictionary on current word<small>:!open dict://</small>
<kbd>Space</kbd> <kbd>cp</kbd>𝐍Toggle Markdown preview<small>iamcco/markdown-preview.nvim</small>
<kbd>Space</kbd> <kbd>mc</kbd>𝐍Open color-picker<small>uga-rosa/ccc.nvim</small>
<kbd>Space</kbd> <kbd>tt</kbd>𝐍Open terminal (root dir)<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>tT</kbd>𝐍Open terminal (cwd)<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>tg</kbd>𝐍Open Lazygit (root dir)<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>tG</kbd>𝐍Open Lazygit (cwd)<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>gu</kbd>𝐍Open undo-tree<small>mbbill/undotree</small>
<kbd>Space</kbd> <kbd>gb</kbd>𝐍Git blame<small>FabijanZulj/blame.nvim</small>
<kbd>Space</kbd> <kbd>gB</kbd>𝐍Git blame in window<small>FabijanZulj/blame.nvim</small>
<kbd>Space</kbd> <kbd>gm</kbd>𝐍Reveal commit under cursor<small>rhysd/git-messenger.vim</small>
<kbd>Space</kbd> <kbd>go</kbd>𝐍 𝐕Open SCM detailed URL in browser<small>ruifm/gitlinker.nvim</small>
<kbd>Space</kbd> <kbd>mg</kbd>𝐍Open Neogit<small>NeogitOrg/neogit</small>
<kbd>Space</kbd> <kbd>ml</kbd>𝐍Append modeline to end of buffer<small>config/keymaps.lua</small>
<kbd>Space</kbd> <kbd>mda</kbd>𝐕Sequentially mark region for diff<small>AndrewRadev/linediff.vim</small>
<kbd>Space</kbd> <kbd>mdf</kbd>𝐕Mark region for diff and compare if more than one<small>AndrewRadev/linediff.vim</small>
<kbd>Space</kbd> <kbd>mds</kbd>𝐍Shows the comparison for all marked regions<small>AndrewRadev/linediff.vim</small>
<kbd>Space</kbd> <kbd>mdr</kbd>𝐍Removes the signs denoting the diff regions<small>AndrewRadev/linediff.vim</small>
<kbd>Space</kbd> <kbd>mh</kbd>𝐍Open HTTP Rest UI<small>rest-nvim/rest.nvim</small>
<kbd>Space</kbd> <kbd>mt</kbd>𝐍 𝐕Toggle highlighted word<small>t9md/vim-quickhl</small>
<kbd>Space</kbd> <kbd>mo</kbd>𝐍Update Markdown TOC<small>mzlogin/vim-markdown-toc</small>
<kbd>Space</kbd> <kbd>zz</kbd>𝐍Toggle distraction-free writing<small>folke/zen-mode.nvim</small>

Plugin: Mini.Surround

See echasnovski/mini.surround for more mappings and usage information.

KeyModeAction
<kbd>sa</kbd> & movement𝐍 𝐕Add surrounding
<kbd>cs</kbd> & movement𝐍Replace surrounding
<kbd>ds</kbd> & movement𝐍Delete surrounding
<kbd>gzf</kbd> & movement𝐍Find surrounding (to the right)
<kbd>gzF</kbd> & movement𝐍Find surrounding (to the left)
<kbd>gzh</kbd> & movement𝐍Highlight surrounding
<kbd>gzn</kbd> & movement𝐍Update neighbor lines

Plugin: Gitsigns

See lewis6991/gitsigns.nvim for more mappings and usage information.

KeyModeAction
<kbd>]g</kbd> or <kbd>]g</kbd>𝐍Next/previous Git hunk
<kbd>gs</kbd>𝐍Preview hunk
<kbd>Space</kbd> <kbd>hp</kbd>𝐍Preview hunk inline
<kbd>Space</kbd> <kbd>hb</kbd>𝐍Blame line
<kbd>Space</kbd> <kbd>hs</kbd>𝐍 𝐕Stage hunk
<kbd>Space</kbd> <kbd>hr</kbd>𝐍 𝐕Reset hunk
<kbd>Space</kbd> <kbd>hu</kbd>𝐍Undo stage hunk
<kbd>Space</kbd> <kbd>hS</kbd>𝐍Stage buffer
<kbd>Space</kbd> <kbd>hR</kbd>𝐍Reset buffer
<kbd>Space</kbd> <kbd>hd</kbd>𝐍Diff against the index
<kbd>Space</kbd> <kbd>hD</kbd>𝐍Diff against the last commit
<kbd>Space</kbd> <kbd>hw</kbd>𝐍Toggle word diff
<kbd>Space</kbd> <kbd>hl</kbd>𝐍Publish hunks to location-list
<kbd>Space</kbd> <kbd>htb</kbd>𝐍Toggle git current line blame
<kbd>Space</kbd> <kbd>htd</kbd>𝐍Toggle git deleted
<kbd>Space</kbd> <kbd>htw</kbd>𝐍Toggle git word diff
<kbd>Space</kbd> <kbd>htl</kbd>𝐍Toggle git line highlight
<kbd>Space</kbd> <kbd>htn</kbd>𝐍Toggle git number highlight
<kbd>Space</kbd> <kbd>hts</kbd>𝐍Toggle git signs
<kbd>ih</kbd>𝐎Select inner hunk operator

Plugin: Diffview

See sindrets/diffview.nvim for more mappings and usage information.

KeyModeAction
<kbd>Space</kbd> <kbd>gd</kbd>𝐍Diff view file history
<kbd>Space</kbd> <kbd>gv</kbd>𝐍Diff view open
Β 
Within diffview "view" windowΒ 
Β 
<kbd>Tab</kbd> / <kbd>Shift</kbd>+<kbd>Tab</kbd>𝐍Select next/previous entry
<kbd>;</kbd> <kbd>a</kbd>𝐍Focus file
<kbd>;</kbd> <kbd>e</kbd>𝐍Toggle files panel
Β 
Within diffview "file" panelΒ 
Β 
<kbd>q</kbd>𝐍Close
<kbd>h</kbd>𝐍Previous entry
<kbd>o</kbd>𝐍Focus entry
<kbd>gf</kbd>𝐍Open file
<kbd>sg</kbd>𝐍Open file in split
<kbd>st</kbd>𝐍Open file in new tab
<kbd>Ctrl</kbd>+<kbd>r</kbd>𝐍Refresh files
<kbd>;</kbd> <kbd>e</kbd>𝐍Toggle panel
Β 
Within diffview "history" panelΒ 
Β 
<kbd>q</kbd>𝐍Close diffview
<kbd>o</kbd>𝐍Focus entry
<kbd>O</kbd>𝐍Show options

Plugin: Telescope

See telescope.nvim for more mappings and usage information.

KeyModeAction
<kbd>;r</kbd>𝐍Results of the previous picker
<kbd>;p</kbd>𝐍List of the previous pickers
<kbd>;f</kbd>𝐍File search
<kbd>;g</kbd>𝐍Grep search
<kbd>;b</kbd>𝐍Buffers
<kbd>;h</kbd>𝐍Highlights
<kbd>;j</kbd>𝐍Jump points
<kbd>;m</kbd>𝐍Marks
<kbd>;o</kbd>𝐍Vim options
<kbd>;t</kbd>𝐍LSP workspace symbols
<kbd>;v</kbd>𝐍 𝐕Yank history
<kbd>;n</kbd>𝐍Plugins
<kbd>;k</kbd>𝐍Thesaurus
<kbd>;u</kbd>𝐍Spelling suggestions
<kbd>;s</kbd>𝐍Sessions
<kbd>;x</kbd>𝐍Old files
<kbd>;w</kbd>𝐍Zk notes
<kbd>;z</kbd>𝐍Zoxide directories
<kbd>;;</kbd>𝐍Command history
<kbd>;:</kbd>𝐍Commands
<kbd>;/</kbd>𝐍Search history
<kbd>;dd</kbd>𝐍LSP definitions
<kbd>;di</kbd>𝐍LSP implementations
<kbd>;dr</kbd>𝐍LSP references
<kbd>;da</kbd>𝐍 𝐕LSP code actions
<kbd>Space</kbd> <kbd>/</kbd>𝐍Buffer fuzzy find
<kbd>Space</kbd> <kbd>gs</kbd>𝐍Git status
<kbd>Space</kbd> <kbd>gr</kbd>𝐍Git branches
<kbd>Space</kbd> <kbd>gl</kbd>𝐍Git commits
<kbd>Space</kbd> <kbd>gL</kbd>𝐍Git buffer commits
<kbd>Space</kbd> <kbd>gh</kbd>𝐍Git stashes
<kbd>Space</kbd> <kbd>gt</kbd>𝐍Find symbols matching word under cursor
<kbd>Space</kbd> <kbd>gf</kbd>𝐍Find files matching word under cursor
<kbd>Space</kbd> <kbd>gg</kbd>𝐍 𝐕Grep word under cursor
<kbd>Space</kbd> <kbd>sc</kbd>𝐍Colorschemes
<kbd>Space</kbd> <kbd>sd</kbd>𝐍Document diagnostics
<kbd>Space</kbd> <kbd>sD</kbd>𝐍Workspace diagnostics
<kbd>Space</kbd> <kbd>sh</kbd>𝐍Help tags
<kbd>Space</kbd> <kbd>sk</kbd>𝐍Key-maps
<kbd>Space</kbd> <kbd>sm</kbd>𝐍Man pages
<kbd>Space</kbd> <kbd>ss</kbd>𝐍LSP document symbols
<kbd>Space</kbd> <kbd>sS</kbd>𝐍LSP workspace symbols
<kbd>Space</kbd> <kbd>st</kbd>𝐍Todo list
<kbd>Space</kbd> <kbd>sT</kbd>𝐍Todo/Fix/Fixme list
<kbd>Space</kbd> <kbd>sw</kbd>𝐍Grep string
Β 
Within Telescope windowΒ 
Β 
<kbd>?</kbd>𝐍Keymaps help screen
<kbd>Ctrl</kbd>+<kbd>Space</kbd>𝐍Move from none fuzzy search to fuzzy
<kbd>jj</kbd> or <kbd>Escape</kbd>𝐈Leave Insert mode
<kbd>i</kbd>𝐍Enter Insert mode (filter input)
<kbd>q</kbd> or <kbd>Escape</kbd>𝐍Exit Telescope
<kbd>Tab</kbd> or <kbd>Shift</kbd>+<kbd>Tab</kbd>𝐍 𝐈Next/previous candidate
<kbd>Ctrl</kbd>+<kbd>d</kbd>/<kbd>u</kbd>𝐍 𝐈Scroll down/upwards
<kbd>Ctrl</kbd>+<kbd>f</kbd>/<kbd>b</kbd>𝐍 𝐈Scroll preview down/upwards
<kbd>Ctrl</kbd>+<kbd>j</kbd>/<kbd>k</kbd>𝐍 𝐈Scroll preview vertically
<kbd>Ctrl</kbd>+<kbd>h</kbd>/<kbd>l</kbd>𝐍 𝐈Scroll preview horizontally
<kbd>J</kbd> or <kbd>K</kbd>𝐍Select candidates up/downwards
<kbd>st</kbd>𝐍Open in a new tab
<kbd>sg</kbd>𝐍Open in a vertical split
<kbd>sv</kbd>𝐍Open in a split
<kbd>*</kbd>𝐍Toggle selection
<kbd>u</kbd>𝐍Drop all
<kbd>w</kbd>𝐍Smart send to quickfix list
<kbd>e</kbd>𝐍Send to quickfix list
<kbd>Ctrl</kbd>+<kbd>q</kbd>𝐈Send to quickfix list
<kbd>dd</kbd>𝐍Delete entry (buffer list)
<kbd>!</kbd>𝐍Edit in command line

Plugin: Neo-Tree

See nvim-neo-tree/neo-tree.nvim for more mappings and usage information.

KeyModeAction
<kbd>fe</kbd> / <kbd>Space</kbd><kbd>e</kbd>𝐍Toggle file explorer (root)
<kbd>fE</kbd> / <kbd>Space</kbd><kbd>E</kbd>𝐍Toggle file explorer (cwd)
<kbd>ge</kbd>𝐍Open Git explorer
<kbd>be</kbd>𝐍Open Buffer explorer
<kbd>xe</kbd>𝐍Open Document explorer
<kbd>;a</kbd>𝐍Focus current file in file-explorer
Β 
Within Neo-Tree windowΒ 
Β 
<kbd>g?</kbd>𝐍Show help
<kbd>q</kbd>𝐍Close window
<kbd>j</kbd> or <kbd>k</kbd>𝐍Move up and down the tree
<kbd>Tab</kbd> or <kbd>Shift</kbd>+<kbd>Tab</kbd>𝐍Next or previous source
<kbd>]g</kbd> or <kbd>[g</kbd>𝐍Jump to next/previous git modified node
<kbd>l</kbd>𝐍Toggle collapse/expand directory or open file
<kbd>h</kbd>𝐍Collapse directory tree
<kbd>Return</kbd>𝐍Select window to open file
<kbd>gr</kbd>𝐍Grep in current position
<kbd>gf</kbd>𝐍Find files in current position
<kbd>.</kbd>𝐍Set as root directory
<kbd>Backspace</kbd>𝐍Change into parent directory
<kbd>sv</kbd> or <kbd>S</kbd>𝐍Open file in a horizontal split
<kbd>sg</kbd> or <kbd>s</kbd>𝐍Open file in a vertical split
<kbd>st</kbd> or <kbd>t</kbd>𝐍Open file in new tab
<kbd>p</kbd>𝐍Preview toggle
<kbd>a</kbd>𝐍Create new directories and/or files
<kbd>N</kbd>𝐍Create new directory
<kbd>r</kbd>𝐍Rename file or directory
<kbd>dd</kbd>𝐍Delete
<kbd>c</kbd> / <kbd>m</kbd>𝐍Copy/move
<kbd>y</kbd> / <kbd>x</kbd> / <kbd>P</kbd>𝐍Clipboard copy/cut/paste
<kbd>!</kbd>𝐍Filter
<kbd>D</kbd>𝐍Filter directories
<kbd>#</kbd>𝐍Fuzzy sorter
<kbd>F</kbd>𝐍Filter on submit
<kbd>Ctrl</kbd>+<kbd>c</kbd>𝐍Clear filter
<kbd>Ctrl</kbd>+<kbd>r</kbd> or <kbd>R</kbd>𝐍Refresh
<kbd>fi</kbd> / <kbd>fe</kbd>𝐍Include/exclude
<kbd>H</kbd>𝐍Toggle hidden files
<kbd>e</kbd>𝐍Toggle auto-expand window width
<kbd>w</kbd>𝐍Toggle window width
<kbd>z</kbd>𝐍Collapse all nodes

Plugin: Marks

See chentau/marks.nvim for more mappings and usage information.

KeyModeAction
<kbd>m,</kbd>𝐍Set the next available alphabetical (lowercase) mark
<kbd>m;</kbd>𝐍Toggle the next available mark at the current line
<kbd>m</kbd> <kbd>a-z</kbd>𝐍Set mark
<kbd>dm</kbd> <kbd>a-z</kbd>𝐍Remove mark
<kbd>dm-</kbd>𝐍Delete all marks on the current line
<kbd>dm<Space></kbd>𝐍Delete all marks in the current buffer
<kbd>m]</kbd>𝐍Move to next mark
<kbd>m[</kbd>𝐍Move to previous mark
<kbd>m:</kbd> <kbd>a-z</kbd>𝐍Preview mark
<kbd>m/</kbd>𝐍List marks from all opened buffers

Plugin: Zk

See zk-org/zk-nvim and zk for more mappings and usage information.

KeyModeAction
<kbd>Space</kbd>+<kbd>zn</kbd>𝐍Ask for title and create new note
<kbd>Space</kbd>+<kbd>zo</kbd>𝐍Browse notes sorted by modification time
<kbd>Space</kbd>+<kbd>zt</kbd>𝐍Browse tags
<kbd>Space</kbd>+<kbd>zf</kbd>𝐍Search notes
<kbd>Space</kbd>+<kbd>zf</kbd>𝐕Search notes with selection
<kbd>Space</kbd>+<kbd>zb</kbd>𝐍Show backlinks
<kbd>Space</kbd>+<kbd>zl</kbd>𝐍Show links
</details>