vim-config

rafiApache-2.0活跃维护

一套用 Lua 精心调校的 Neovim 配置,开箱即用,把 LSP、补全和常用插件都配好,省去自己从零折腾编辑器的时间。

Lean mean Neovim machine, carefully crafted with :heart: Use with latest Neovim.

暂无版本1,977star449fork同步于 2026-11-10 11:45 UTC

怎么上手

由 README 提炼,执行前请确认
git clone [email protected]:rafi/vim-config.git ~/.config/nvim
cd ~/.config/nvim
nvim
硬件要求按 README 说明

README 未说明硬件要求;需要 Neovim ≥ 0.12(vim.pack 依赖)和 git ≥ 2.19.0,可选装 bat、fd、fzf、ripgrep、zoxide

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

一份精简的 Neovim 配置,启动只要 30-45ms,用 vim.pack 管理插件,适合想直接拿来用或 fork 改造的人

一套用 Lua 精心调校的 Neovim 配置,开箱即用,把 LSP、补全和常用插件都配好,省去自己从零折腾编辑器的时间。

核心能力

  • 用 Neovim 内置 vim.pack 管理插件,不再依赖 lazy.nvim
  • 插件几乎全部懒加载,启动时间 30-45ms
  • 用 :RafiExtras 按需开关可选插件,选择存进 rafi.json
  • 用 :Mason 统一安装 LSP、DAP、linter 和 formatter
  • 以 snacks.nvim 选择器为中心的工作流,配 blink.cmp 补全

容易踩的坑

必须用 Neovim ≥ 0.12,低版本没有 vim.pack 无法启动;首次运行 nvim 才会自动安装全部插件,需联网;从 lazy.nvim 旧版升级时 lua/plugins/*.lua 里的 lazy 规格会被忽略,要改写成 vim.pack.add();装 LSP 等扩展需要 npm、curl 等额外工具

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Rafael Bodill's Neovim Config

    CI

    Lean mean Neovim machine, 30-45ms startup time. Works best with [Neovim] ≥0.12

    (plugins managed by Neovim's built-in [vim.pack])

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

    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.

    [!IMPORTANT] LazyVim has been dropped in-favor of vim.pack -- see Upgrade from lazy.nvim

    Features

    • Native [vim.pack] for managing plugins
    • Fast startup time: plugins are almost entirely lazy-loaded!
    • Robust, yet light-weight
    • Review plugin updates with :Packman (Space+l), and toggle opt-in extras with :RafiExtras or Space+mx
    • Install LSP, DAP, linters, and formatters. Use with :Mason or Space+cm
    • LSP configuration with [nvim-lspconfig]
    • folke/snacks.nvim picker centric work-flow with lists (try ;+f…)
    • Custom context-menu (try it! ;+c)
    • Auto-complete setup with [blink.cmp]
    • Structure view with bassamsdata/namu.nvim
    • Git features using lewis6991/gitsigns.nvim, sindrets/diffview.nvim, and more
    • Session management with rmagatti/auto-session
    • Unobtrusive, yet informative status & tab lines
    • Premium color-schemes
    • Remembers last-used colorscheme

    Screenshot

    Vim screenshot

    Prerequisites

    • git ≥ 2.19.0 (brew install git)
    • Neovim ≥ v0.12 for vim.pack (brew install neovim).

    Optional, but highly recommended:

    • bat (brew install bat)
    • fd (brew install fd)
    • fzf (brew install fzf)
    • ripgrep (brew install ripgrep)
    • zoxide (brew install zoxide)

    Install

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

      mkdir -p ~/.config
      git clone [email protected]: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 meets the requirements.

    3. Inside Neovim, run :RafiExtras and press Enter to toggle extras, then restart Neovim. Choices are saved in rafi.json.

    Enjoy! :smile:

    Install LSP, DAP, Linters, Formatters

    Use :Mason (or Space+cm) to install and manage LSP servers, DAP servers, linters and formatters. See :h mason.nvim and mason-org/mason.nvim for more information.

    Language-Server Protocol (LSP)

    You can install LSP servers using :Mason UI, or :MasonInstall <name>, or :LspInstall <name> (use Tab 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 plugin/lspconfig.lua for custom key-mappings, and after/lsp/ for settings of 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 panache 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 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 update Neovim configuration from my repo, and move plugins to the versions locked in its nvim-pack-lock.json:

    make update
    

    To upgrade packages and plugins beyond that:

    • Neovim plugins: Use :Packman check to review pending updates first and apply them with U. Or use make update-plugins for a headless update. With Neovim 0.13+, the plugins are checked in the background every hour, and a clickable count appears in statusline. Press Space+l (:Packman) to review updates.
    • Mason packages: :Mason and press U

    Upgrade from the lazy.nvim version

    The first start writes rafi.json from your lazyvim.json extras, and warns about any that have no vim.pack version. Then:

    • Plugins that used to be core (blink.cmp, mini.ai, mini.pairs, mini.surround, grug-far, outline, undotree, nvim-treesitter, the neo-hybrid colorscheme, now colorscheme.morrow, and others) are now extras. Pick the ones you want with :RafiExtras.
    • lua/plugins/*.lua files that return lazy.nvim specs are ignored, with a warning. Rewrite them as plain vim.pack.add() code, see Extend: Plugins.
    • lua/config/setup.lua and lua/config/lazy.lua are no longer read.
    • LazyVim.* calls in lua/config/*.lua fail. Use rafi.util.root, rafi.util.pick, rafi.util.format, rafi.util.lsp, rafi.util.lualine, rafi.util.icons and rafi.pack.has().
    • Once you're done, delete what lazy.nvim left behind: lazyvim.json, lazy-lock.json, ~/.local/share/nvim/lazy/ and ~/.local/state/nvim/lazy/.

    Structure

    • after/ - Language specific custom settings and plugins.
    • lua/ - Lua configurations
    • plugin/ - Core plugins, one vim.pack file each
    • snippets/ - Personal code snippets
    • rafi.json - Enabled extras and disabled core plugins (not tracked)

    Extending

    Extend: Config

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

    • lua/config/autocmds.lua - Custom auto-commands
    • lua/config/options.lua - Custom options
    • lua/config/keymaps.lua - Custom key-mappings

    Each loads right after its Rafi counterpart, so it can override it.

    Adding plugins or override existing options:

    • lua/plugins/*.lua - Plain Lua files calling vim.pack.add(), sourced after the extras
    • lua/plugins/extras/<cat>/<name>.lua - Your own extras, listed in :RafiExtras next to Rafi's

    Extend: Plugins

    Toggle "extras" plugins with :RafiExtras (or Space+mx) and Enter, then restart Neovim. This saves choices in rafi.json, which you can also edit manually. extras lists extras by <cat>.<name> (their path under lua/rafi/extras/), and disabled turns off core plugins by their path under plugin/:

    {
      "extras": [
        "coding.align",
        "editor.dial",
        "lang.docker",
        "lang.go",
        "lang.json",
        "lang.markdown",
        "lang.python",
        "lang.toml",
        "lang.typescript",
        "lang.yaml",
        "ui.bookmarks",
        "ui.deadcolumn"
      ],
      "disabled": ["lualine"]
    }
    

    A core plugin listed in disabled doesn't load, so you can replace it with your own file. Files in lua/plugins/*.lua are plain Lua, sourced after the extras. Here's an example, lua/plugins/lightline.lua:

    -- Use lightline instead of lualine (add "lualine" to "disabled")
    vim.pack.add({ 'https://github.com/itchyny/lightline.vim' })
    vim.g.lightline = { colorscheme = 'wombat' }
    

    See plugin/ and lua/rafi/extras/ for examples that lazy-load with lua/rafi/pack.lua.

    Extend: Defaults

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

      -- Elite-mode (hjkl mode. arrow-keys resize window)
      vim.g.elite_mode = false
      
      -- External file diff program
      vim.g.diffprg = 'bcompare'
      
      -- <Tab> selects completion items, jumps in snippets and opens
      -- completion (coding.blink). false keeps <Tab> for snippet jumps and
      -- AI actions only.
      vim.g.cmp_supertab = true
      

    Extend: LSP Settings

    Override server options with vim.lsp.config(), for example in lua/plugins/lsp.lua (or an after/lsp/<server>.lua file):

    vim.lsp.config('yamlls', {
      filetypes = { 'yaml', 'yaml.ansible', 'yaml.docker-compose' },
    })
    vim.lsp.config('lua_ls', {
      settings = {
        Lua = {
          workspace = { checkThirdParty = false },
          completion = { callSnippet = 'Replace' },
        },
      },
    })
    

    Plugin Highlights

    • Plugin management with Neovim's built-in [vim.pack], lazy-loaded with small plugin/ files
    • Auto-completion with Language-Server Protocol (LSP)
    • Project-aware tabline
    • Extensive syntax highlighting with nvim-treesitter/nvim-treesitter (treesitter.nvim-treesitter extra)

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

    Plugins Included

    Core plugins, one file each under plugin/. Turn one off by adding its file name (e.g. lualine) to disabled in rafi.json. Most other plugins are extras, and many of them are enabled by default, see Extra Plugins.

    FileRepositoryDescription
    conformstevearc/conform.nvimLightweight yet powerful formatter plugin
    lintmfussenegger/nvim-lintAsynchronous linter plugin, reports via vim.diagnostic
    lspconfigneovim/nvim-lspconfigQuickstart configs for Nvim LSP, with mason-org/mason-lspconfig.nvim and b0o/SchemaStore.nvim
    lualinenvim-lualine/lualine.nvimBlazing fast and easy to configure statusline
    masonmason-org/mason.nvimPortable package manager for Neovim
    mini-iconsnvim-mini/mini.iconsIcon provider
    snacksfolke/snacks.nvimCollection of QoL plugins: picker, explorer, terminal, toggles (required)
    theme-loaderrafi/theme-loader.nvimUse last-used colorscheme

    nvim-mini/mini.misc always loads, it powers the lazy-loading helpers in lua/rafi/pack.lua.

    Extra Plugins

    Opt-in plugins, one file each under lua/rafi/extras/. Toggle them with :RafiExtras (saved in rafi.json), see Extend: Plugins.

    Extra Plugins: AI

    Extra: ai.<name>

    NameRepositoryDescription
    avanteavante-corp/avante.nvimCursor-like AI chat and edit sidebar
    claudecodecoder/claudecode.nvimClaude Code integration
    codeiumExafunction/windsurf.nvimCodeium completion (run :Codeium Auth once to sign in)
    copilotzbirenbaum/copilot.luaGitHub Copilot (run :Copilot auth once to sign in)
    copilot-chatCopilotC-Nvim/CopilotChat.nvimChat with GitHub Copilot
    copilot-nativeNeovim's native inline completionCopilot language server inline completion (needs Neovim 0.12, :LspCopilotSignIn, exclusive with ai.copilot)
    sidekickfolke/sidekick.nvimNext edit suggestions with the Copilot LSP server, and AI CLI sessions
    supermavensupermaven-inc/supermaven-nvimSupermaven completion (run :SupermavenUseFree or :SupermavenUsePro)
    tabninetzachar/cmp-tabnineTabnine completion as a blink.cmp source (downloads its binary on install)

    All of them share the <leader>a keys (the one later in rafi.json wins), and vim.g.ai_cmp selects completion-menu or inline suggestions.

    Extra Plugins: Coding

    Extra: coding.<name>

    NameRepositoryDescription
    alignnvim-mini/mini.alignAlign text interactively
    blinksaghen/blink.cmpCode completion, with rafamadriz/friendly-snippets (enabled by default)
    chainsawchrisgrieser/nvim-chainsawCreate log statements on the fly
    commentnumToStr/Comment.nvimPowerful line and block-wise commenting, with JoosepAlviste/nvim-ts-context-commentstring
    debugprintandrewferrier/debugprint.nvimDebugging in Neovim the print() way
    emmetmattn/emmet-vimExpand abbreviations à la emmet
    lazydevfolke/lazydev.nvimConfigures LuaLS for editing Neovim config and plugins (enabled by default)
    linediffAndrewRadev/linediff.vimPerform diffs on blocks of code
    mini-ainvim-mini/mini.aiExtend and create a/i textobjects (enabled by default)
    mini-commentnvim-mini/mini.commentFast and feature-rich commenting (gc), with treesitter context
    mini-pairsnvim-mini/mini.pairsAutomatically manage character pairs (enabled by default)
    mini-splitjoinnvim-mini/mini.splitjoinSplit and join arguments (enabled by default)
    mini-surroundnvim-mini/mini.surroundFast and feature-rich surround actions (enabled by default)
    mini-trailspacenvim-mini/mini.trailspaceTrailing whitespace highlight and remove (enabled by default)
    neogendanymat/neogenAnnotation generator
    sibling-swapWansmer/sibling-swap.nvimSwap sibling treesitter nodes
    taboutabecodes/tabout.nvimTab out of brackets and quotes
    ts-commentsfolke/ts-comments.nvimEnhance Neovim's native comments with treesitter context (enabled by default)
    yankygbprod/yanky.nvimBetter yank and paste: yank ring, history picker, cycle after put

    Extra Plugins: Colorscheme

    Extra: colorscheme.<name>

    NameRepositoryDescription
    bambooribru17/bamboo.nvimWarm green theme
    catppuccincatppuccin/nvimSoothing pastel theme
    cyberdreamscottmckendry/cyberdream.nvimHigh-contrast, futuristic & vibrant colorscheme
    githubprojekt0n/github-nvim-themeGithub's Neovim themes
    kanagawarebelot/kanagawa.nvimColorscheme inspired by Katsushika Hokusai's famous painting
    lacklusterslugbyte/lackluster.nvimMinimal, mostly monochrome colorscheme that's soft on the eyes
    materialmarko-cerovac/material.nvimColorscheme based on the Material Design color palette
    meowsootmarekh19/meowsoot.nvimPink-cyan-lavender colorscheme, where green never reaches code
    modusmiikanissi/modus-themes.nvimHighly accessible themes conforming with WCAG AAA color contrast
    monokai-nightastypolirritmico/monokai-nightasty.nvimDark/light theme based on the Monokai color palette
    monokai-proloctvl842/monokai-pro.nvimMonokai Pro colorscheme, with several filter variants
    morrowrafi/morrow.nvimModern dark colorscheme, hybrid improved, the initial colorscheme (enabled by default)
    onenordrmehri01/onenord.nvimTheme combining the Nord and Atom One Dark color palettes
    oxocarbonnyoom-engineering/oxocarbon.nvimDark and light theme inspired by IBM Carbon
    tokyonightfolke/tokyonight.nvimClean, dark Neovim theme (enabled by default)

    Extra Plugins: Editor

    Extra: editor.<name>

    NameRepositoryDescription
    anyjumppechorin/any-jump.vimJump to any definition and references without overhead
    auto-sessionrmagatti/auto-sessionAutomatically save and restore sessions (enabled by default)
    dbeekndndrj/nvim-dbeeInteractive database client
    dialmonaqa/dial.nvimIncrement and decrement numbers, dates, and more (enabled by default)
    fffdmtrKovalenko/fffFast fuzzy file finder and live grep with frecency
    firenvimglacambre/firenvimNeovim in the browser
    flybufnvimdev/flybuf.nvimList buffers in a float window
    fzfibhagwan/fzf-luaFZF picker, alternative to the snacks picker
    glancednlhc/glance.nvimPretty window for navigating LSP locations
    grug-farMagicDuck/grug-far.nvimSearch/replace in multiple files (enabled by default)
    guess-indentnmac427/guess-indent.nvimAutomatic indentation style detection (enabled by default)
    harpoon2ThePrimeagen/harpoonMarks for navigating your project
    helpfultweekmonster/helpful.vimDisplay vim version numbers in docs
    inc-renamesmjonas/inc-rename.nvimIncremental LSP renaming, based on Neovim's command-preview
    key-analyzermeznaric/key-analyzer.nvimVisualize keyboard mappings for a prefix on a keyboard layout
    kubectlramilito/kubectl.nvimBrowse and manage Kubernetes resources
    leapandyg/leap.nvimGeneral-purpose motion plugin for fast cursor movement
    mini-diffnvim-mini/mini.diffGit diff signs and hunk overlay
    mini-filesnvim-mini/mini.filesColumn-based file explorer
    mini-hipatternsnvim-mini/mini.hipatternsHighlight patterns in text, e.g. hex colors and Tailwind CSS classes (enabled by default)
    mini-movenvim-mini/mini.moveMove lines and selections with Alt-h/j/k/l
    mini-visitsnvim-mini/mini.visitsTrack and reuse file system visits
    namubassamsdata/namu.nvimFlexible symbol navigation (LSP, treesitter, ctags, diagnostics) (enabled by default)
    neo-treenvim-neo-tree/neo-tree.nvimFile explorer tree (replaces the core Snacks explorer)
    oilstevearc/oil.nvimFile explorer that lets you edit the filesystem like a buffer
    outlinehedyhli/outline.nvimCode outline sidebar powered by LSP
    packmanrafi/packman.nvimReview and apply vim.pack plugin updates in a picker (enabled by default)
    quickhlt9md/vim-quickhlHighlight words quickly
    restrest-nvim/rest.nvimFast Neovim http client written in Lua
    sudalambdalisue/vim-sudaRead or write files with sudo
    telescopenvim-telescope/telescope.nvimTelescope as the picker (replaces snacks picker keys), with fzf-native and jvgrootveld/telescope-zoxide
    thesaurusrafi/telescope-thesaurus.nvimBrowse synonyms and definitions, via the snacks picker (telescope's with editor.telescope)
    tmux-navigatorchristoomey/vim-tmux-navigatorSeamless navigation between tmux panes and vim splits (enabled by default)
    todo-commentsfolke/todo-comments.nvimHighlight, list and search todo comments in your projects (enabled by default)
    troublefolke/trouble.nvimPretty lists to help you solve all code diagnostics (enabled by default)
    ufokevinhwang91/nvim-ufoMake folds look modern and keep a high performance
    undotreembbill/undotreeVisualize the undo history tree
    window-pickers1n7ax/nvim-window-pickerFancy window picker (enabled by default)

    Extra Plugins: Formatting

    Extra: formatting.<name>

    NameRepositoryDescription
    blackpsf/blackPython formatter, via conform
    prettierprettier/prettierFormatter for web, markdown, yaml and more, via conform (only when a prettier config exists)

    Extra Plugins: Git

    Extra: git.<name>

    NameRepositoryDescription
    blameFabijanZulj/blame.nvimShow git blame annotations inline, or in a scrollable window
    committiarhysd/committia.vimPleasant editing on Git commit messages (enabled by default)
    diffviewsindrets/diffview.nvimTabpage interface for cycling through diffs (enabled by default)
    fugitivetpope/vim-fugitiveGit client, including junegunn/gv.vim commit browser
    gitsignslewis6991/gitsigns.nvimGit signs written in pure lua (enabled by default)
    neogitNeogitOrg/neogitMagit clone for Neovim

    Extra Plugins: Grammar

    Extra: grammar.<name>

    NameDescription
    harperHarper grammar and prose checker language server for Markdown

    Extra Plugins: Lang

    Extra: lang.<name>. Each registers its language servers, Mason tools, linters and formatters with rafi.util.lang, plus any plugins listed.

    NameDescription
    ansiblemfussenegger/nvim-ansible filetypes/ftplugin, ansiblels and ansible-lint
    bruno.bru filetype and its tree-sitter-bruno parser
    clangdC/C++: clangd and dchinmay2/clangd_extensions.nvim
    dockerDockerfile and compose language servers, hadolint linter
    gogopls, Go tools, golangci-lint and formatters
    helmqvalentin/helm-ls.nvim filetypes/ftplugin, and helm_ls language server
    javamfussenegger/nvim-jdtls, jdtls started per Java buffer (installed by Mason)
    jsonjsonls with SchemaStore schemas (enabled by default)
    log-highlightingMTDL9/vim-log-highlighting syntax for log files
    markdownpanache, MeanderingProgrammer/render-markdown.nvim and selimacerbas/mdkite.nvim (with selimacerbas/kitehost.nvim) (enabled by default)
    mustache-handlebarsmustache/vim-mustache-handlebars syntax, indent and ftplugin
    nixnil language server, nixfmt formatter and statix linter
    pythonpyright + ruff, linux-cultist/venv-selector.nvim
    reasonreasonml-editor/vim-reason-plus syntax and indent
    rustmrcjkb/rustaceanvim (rust-analyzer) and Saecki/crates.nvim for Cargo.toml
    sqltpope/vim-dadbod stack with kristijanhusak/vim-dadbod-ui (:DBUI, <leader>D) and kristijanhusak/vim-dadbod-completion, sqlfluff
    stylusiloginow/vim-stylus syntax, indent and completion
    svelteSvelte language server, plus the vtsls plugin
    tailwindTailwind CSS language server
    terraformterraformls, tflint, validate linter and fmt formatters
    tmuxTmuxfile filetype, and gK opens man tmux at the word
    tomltaplo language server (enabled by default)
    typescriptvtsls language server for TypeScript/JavaScript
    vuevue_ls (hybrid mode) plus vtsls with @vue/typescript-plugin
    yamlyamlls with SchemaStore and Kubernetes schemas (enabled by default)

    Extra Plugins: Linting

    Extra: linting.<name>

    NameDescription
    eslintESLint language server, with fix-all on save (vim.g.eslint_auto_format)

    Extra Plugins: LSP

    Extra: lsp.<name>

    KeyNameDescription
    actions-previewaznhe21/actions-preview.nvimFully customizable previewer for LSP code actions, replaces <leader>ca
    gtdhrsh7th/nvim-gtdLSP's go-to definition or file, with findup/walk fallbacks
    lightbulbkosayoda/nvim-lightbulbVSCode 💡 for neovim's built-in LSP

    Extra Plugins: Org

    Extra: org.<name>

    KeyNameDescription
    calendaritchyny/calendar.vimCalendar application with Google Calendar/Tasks sync
    obsidianobsidian-nvim/obsidian.nvimObsidian vault notes: links, backlinks, dailies, templates
    telekastennvim-telekasten/telekasten.nvimMarkdown zettelkasten or wiki with telescope
    vimwikivimwiki/vimwikiPersonal wiki with markdown syntax in ~/notebook
    zkzk-org/zk-nvimZettelkasten note-taking with the zk CLI

    Extra Plugins: Treesitter

    Extra: treesitter.<name>

    KeyNameDescription
    arboristarborist-ts/arborist.nvimTree-sitter parser manager, installs parsers on demand
    autotagwindwp/nvim-ts-autotagAutomatically add closing tags for HTML and JSX (enabled by default)
    diffmanticHarshK97/diffmantic.nvimSemantic diff using Treesitter
    endwiseRRethy/nvim-treesitter-endwiseWisely add "end" in Ruby, Lua, Vimscript and other languages
    matchupandymass/vim-matchupModern matchit and matchparen (enabled by default)
    nvim-treesitternvim-treesitter/nvim-treesitterTree-sitter parsers, highlight, indent and folds (main branch; enabled by default)
    textobjectsnvim-treesitter/nvim-treesitter-textobjectsTree-sitter textobject motions (enabled by default)
    treesjWansmer/treesjSplit and join blocks of code, using Tree-sitter

    Enable only one of arborist and nvim-treesitter, both install parsers and start highlighting (arborist skips itself if nvim-treesitter is on).

    Extra Plugins: UI

    Extra: ui.<name>

    KeyNameDescription
    alphagoolord/alpha-nvimFast and fully programmable greeter dashboard
    bookmarkstomasky/bookmarks.nvimBookmarks with a global file store and sign annotations (enabled by default)
    bqfkevinhwang91/nvim-bqfPreview and enhanced quickfix window
    bufferlineakinsho/bufferline.nvimSnazzy tab/bufferline (enabled by default)
    cccuga-rosa/ccc.nvimSuper powerful color picker/colorizer plugin
    colorful-winsepnvim-zh/colorful-winsep.nvimColorful and animated window separators
    cursorworditchyny/vim-cursorwordUnderlines other uses of the word under the cursor, in select filetypes
    cybughillb/cybu.nvimCycle buffers with a notification window listing them
    deadcolumnBekaboo/deadcolumn.nvimShow colorcolumn dynamically
    goto-previewrmagatti/goto-previewPreview definitions, implementations and references in floats
    illuminateRRethy/vim-illuminateHighlights other uses of the word under the cursor (regex/treesitter/LSP)
    inclineb0o/incline.nvimFloating statuslines
    markschentoast/marks.nvimInteracting with and manipulating marks
    mini-animatenvim-mini/mini.animateAnimate scrolling, cursor movement and window resizing
    mini-cluenvim-mini/mini.clueShow next key clues, replaces which-key
    mini-indentscopenvim-mini/mini.indentscopeActive indent scope line and textobjects
    mini-mapnvim-mini/mini.mapWindow with buffer text overview, scrollbar and highlights
    mini-starternvim-mini/mini.starterStart screen, alternative to ui.alpha
    packcountrafi/packcount.nvimStatusline count of plugins with pending vim.pack updates, Neovim 0.13+ (enabled by default)
    quickerstevearc/quicker.nvimImproved diagnostics and location/quickfix list windows
    smear-cursorsphamba/smear-cursor.nvimAnimate cursor movement with a smear effect
    stalinetamton-aquib/staline.nvimMinimal statusline, replaces lualine
    tabbynanozuki/tabby.nvimTabpage-based tabline with tab rename, window picker and jump mode, alternative to ui.bufferline
    treesitter-contextnvim-treesitter/nvim-treesitter-contextShow the context of the current function
    which-keyfolke/which-key.nvimPopup with possible key bindings of the command you started typing (enabled by default)

    Extra Plugins: Util

    Extra: util.<name>

    NameRepositoryDescription
    ghldelossa/gh.nvimGitHub code review inside Neovim (needs the gh CLI)
    octopwntester/octo.nvimEdit and review GitHub issues and pull requests
    projectahmedkhalf/project.nvimRecent projects list and root detection
    startuptimedstein64/vim-startuptimeMeasure startup time

    Custom Key-mappings

    Note that,

    • Leader key set as Space
    • Local-Leader key set as ; and used for navigation and search (Snacks/Telescope and Neo-tree)
    • Disable ← ↑ → ↓ in normal mode by enabling vim.g.elite_mode.

    Legend: | Ⓝormal | Ⓥisual | Ⓢelect | Ⓘnsert | Ⓞperator | Ⓒommand |

    Picker

    (Snacks/Telescope)

    KeyModeAction
    Space ;ⓃSelect picker
    ;rⓃResume previous picker
    ;pⓃProjects
    ;fⓃFile
    ;FⓃFile (cwd)
    ;gⓃGrep search
    ;GⓃGrep search (cwd)
    ;bⓃSwitch buffers
    ;hⓃHelp pages
    ;HⓃHighlights
    ;jⓃJumplist
    ;mⓃJump to mark
    ;MⓃMan pages
    ;oⓃOptions
    ;tⓃGoto symbol
    ;TⓃGoto symbol (workspace)
    ;vⓃ ⓋRegisters
    ;sⓃSessions
    ;uⓃSpelling suggestions
    ;xⓃRecent
    ;XⓃRecent (cwd)
    ;zⓃZoxide directories
    ;;ⓃCommand history
    ;:ⓃCommands
    ;/ⓃSearch history
    ;ddⓃLSP definitions
    ;diⓃLSP implementations
    ;drⓃLSP references
    ;daⓃ ⓋLSP code actions
    Space /ⓃBuffer fuzzy find
    Space gsⓃGit status
    Space grⓃGit branches
    Space ghⓃGit stashes
    Space gFⓃFind files matching word under cursor
    Space ggⓃ ⓋGrep word/selection
    Space gGⓃ ⓋGrep word/selection (cwd)
    Space scⓃColorschemes
    Space sdⓃDocument diagnostics
    Space sDⓃWorkspace diagnostics
    Space shⓃHelp tags
    Space skⓃKey-maps
    Space smⓃMan pages
    Space ssⓃLSP document symbols
    Space sSⓃLSP workspace symbols
    Space stⓃTodo list
    Space sTⓃTodo/Fix/Fixme list
    Space swⓃGrep string
     
    ;iⓃ(Snacks only) Icons
    ;wⓃ(org.zk extra) Zk notes
    Space spⓃPlugin directories
    ;kⓃ(editor.thesaurus extra) Thesaurus
     
    Within Picker window 
    ?ⓃKeymaps help screen
    Ctrl+SpaceⓃMove from none fuzzy search to fuzzy
    jj or EscapeⒾLeave Insert mode
    iⓃEnter Insert mode (filter input)
    q or EscapeⓃExit
    Tab or Shift+TabⓃ ⒾNext/previous candidate
    Ctrl+d/uⓃ ⒾScroll down/upwards
    Ctrl+f/bⓃ ⒾScroll preview down/upwards
    Ctrl+j/kⓃ ⒾScroll preview vertically
    Ctrl+h/lⓃ ⒾScroll preview horizontally
    J or KⓃSelect candidates up/downwards
    stⓃOpen in a new tab
    sgⓃOpen in a vertical split
    svⓃOpen in a split
    *ⓃToggle selection
    uⓃDrop all
    wⓃSmart send to quickfix list
    eⓃSend to quickfix list
    Ctrl+qⒾSend to quickfix list
    ddⓃDelete entry (buffer list)
    !ⓃEdit in command line

    Toggle Features

    KeyModeAction
    Space dphⓃToggle profiler highlights
    Space dppⓃToggle profiler
    Space uaⓃToggle animation
    Space uAⓃToggle tabline
    Space ubⓃToggle background dark/light
    Space ucⓃToggle conceal level
    Space uCⓃColorschemes
    Space udⓃToggle buffer diagnostics
    Space uDⓃToggle text dim
    Space ufⓃToggle format on Save
    Space uFⓃToggle format on Save (Global)
    Space ugⓃToggle indentation lines
    Space uGⓃToggle git signs
    Space uhⓃToggle inlay-hints
    Space uiⓃInspect position
    Space uIⓃInspect tree
    Space ulⓃToggle line numbers
    Space uLⓃToggle relative line numbers
    Space umⓃToggle markdown render
    Space unⓃDismiss all notifications
    Space upⓃDisable auto-pairs
    Space urⓃRedraw, clear hlsearch, and diff update
    Space usⓃToggle spell-checker
    Space uSⓃToggle smooth scroll
    Space uTⓃToggle tree-sitter
    Space uwⓃToggle wrap
    Space uzⓃToggle distraction-free zen writing
    Space uZⓃToggle window zoom

    Navigation

    KeyModeActionPlugin or Mapping
    j / kⓃ ⓋCursor moves through display-linesg j/k
    ]i / [iⓃ ⓋJump to scope edgesfolke/snacks.nvim
    gh / glⓃ ⓋEasier line-wise movementg^ g$
    zl / zhⓃScroll horizontally and vertically widerz4 l/h
    Ctrl+jⓃMove to split below<C-w>j or christoomey/vim-tmux-navigator
    Ctrl+kⓃMove to upper split<C-w>k or christoomey/vim-tmux-navigator
    Ctrl+hⓃMove to left split<C-w>h or christoomey/vim-tmux-navigator
    Ctrl+lⓃMove to right split<C-w>l or christoomey/vim-tmux-navigator
    ReturnⓃToggle fold under cursorza
    Shift+ReturnⓃFocus the current fold by closing all otherszMzv
    Ctrl+fⒸMove cursor forwards in commandRight
    Ctrl+bⒸMove cursor backwards in commandLeft
    Ctrl+hⒸMove cursor to the beginning in commandHome
    Ctrl+lⒸMove cursor to the end in commandEnd
    Ctrl+TabⓃGo to next tab:tabnext
    Ctrl+ShiftTabⓃGo to previous tab:tabprevious
    Alt+j or ]ⓃGo to next tab:tabnext
    Alt+k or [ⓃGo to previous tab:tabprevious
    Alt+{ⓃMove tab backward:-tabmove
    Alt+}ⓃMove tab forward:+tabmove

    Selection

    KeyModeActionPlugin or Mapping
    Space+SpaceⓃ ⓋToggle visual-line modeV / Escape
    vspⓃSelect last paste[config/keymaps.lua]
    sgⓋReplace within selected area[config/keymaps.lua]
    Ctrl+rⓋReplace selection with step-by-step confirmation[config/keymaps.lua]
    > / <ⓋIndent and re-select[config/keymaps.lua]
    Tab / Shift+TabⓋIndent and re-select[config/keymaps.lua]
    I / gI / AⓋForce blockwise operation[config/keymaps.lua]

    Jump To

    KeyModeActionPlugin or Mapping
    ], or [,ⓃNext/previous parameternvim-treesitter/nvim-treesitter-textobjects
    ]q or [qⓃNext/previous on quick-fix:cnext / :cprev
    ]a or [aⓃNext/previous on location-list:lnext / :lprev
    ]d or [dⓃNext/previous diagnostics[config/keymaps.lua]
    ]e or [eⓃNext/previous error[config/keymaps.lua]
    ]w or [wⓃNext/previous warning[config/keymaps.lua]
    ]b or [bⓃNext/previous bufferakinsho/bufferline.nvim
    ]f or [fⓃNext/previous function startnvim-treesitter/nvim-treesitter-textobjects
    ]F or [FⓃNext/previous function endnvim-treesitter/nvim-treesitter-textobjects
    ]c or [cⓃNext/previous class startnvim-treesitter/nvim-treesitter-textobjects
    ]C or [CⓃNext/previous class endnvim-treesitter/nvim-treesitter-textobjects
    ]g or [gⓃNext/previous Git hunklewis6991/gitsigns.nvim
    ]i or [iⓃJump to bottom/top edge of scopefolke/snacks.nvim
    ]t or [tⓃNext/previous TODOfolke/todo-comments.nvim
    ]z or [zⓃNext/previous whitespace error[config/keymaps.lua]

    Buffers

    KeyModeActionPlugin or Mapping
    Space+bdⓃDelete bufferfolke/snacks.nvim

    Clipboard

    KeyModeActionPlugin or Mapping
    p or PⓋPaste without yank:let @+=@0
    Space+yⓃCopy relative file-path to clipboard[config/keymaps.lua]
    Space+YⓃCopy absolute file-path to clipboard[config/keymaps.lua]

    Auto-Completion

    KeyModeActionPlugin or Mapping
    EnterⒾAccept completion item[blink.cmp]
    Ctrl+yⒾSelect and accept completion item[blink.cmp]
    Ctrl+SpaceⒾOpen completion menu or toggle documentation[blink.cmp]
    Ctrl+n/p or j/kⒾMovement in completion pop-up[blink.cmp]
    Ctrl+d/uⒾSelect next/previous candidate[blink.cmp]
    Ctrl+f/bⒾScroll documentation[blink.cmp]
    Ctrl+eⒾClose completion menu[blink.cmp]
    Tab / Shift-TabⒾ ⓈNavigate snippet placeholders[blink.cmp]
    Ctrl+l / hⒾ ⓈNext/previous snippet placeholder[blink.cmp]

    LSP

    KeyModeActionPlugin or Mapping
    grⓃGo to references[plugin/lspconfig.lua]
    gRⓃList references with Troublefolke/trouble.nvim
    gdⓃGo to definition[plugin/lspconfig.lua]
    gDⓃGo to declaration[plugin/lspconfig.lua]
    gIⓃGo to implementation[plugin/lspconfig.lua]
    gyⓃGo to type definition[plugin/lspconfig.lua]
    KⓃShow hover help or collapsed fold[plugin/lspconfig.lua]
    gKⓃShow signature help[plugin/lspconfig.lua]
    Space crⓃRename[plugin/lspconfig.lua]
    Space ceⓃOpen diagnostics window[config/keymaps.lua]
    Space csⓃFormatter menu selection[config/keymaps.lua]
    Space caⓃ ⓋCode action (preview with lsp.actions-preview)[plugin/lspconfig.lua]
    Space cAⓃSource action[plugin/lspconfig.lua]
    Space cliⓃLSP incoming calls[plugin/lspconfig.lua]
    Space cloⓃLSP outgoing calls[plugin/lspconfig.lua]
    Space ciwaⓃAdd workspace folder[plugin/lspconfig.lua]
    Space ciwrⓃRemove workspace folder[plugin/lspconfig.lua]
    Space ciwlⓃList workspace folders[plugin/lspconfig