Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Vim Plug | 32,045 | 4 days ago | 131 | mit | Vim Script | |||||
:hibiscus: Minimalist Vim Plugin Manager | ||||||||||
Tmux Resurrect | 9,931 | 3 months ago | 214 | mit | Shell | |||||
Persists tmux environment across system restarts. | ||||||||||
Nvim Lspconfig | 8,136 | 13 hours ago | 63 | apache-2.0 | Lua | |||||
Quickstart configs for Nvim LSP | ||||||||||
Packer.nvim | 7,056 | 9 days ago | 304 | mit | Lua | |||||
A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config | ||||||||||
Vim Startify | 5,138 | 10 days ago | 73 | mit | Vim Script | |||||
:link: The fancy start screen for Vim. | ||||||||||
Nvim Lua Guide | 4,989 | 9 months ago | 18 | |||||||
A guide to using Lua in Neovim | ||||||||||
Dein.vim | 3,386 | 22 days ago | 2 | mit | Vim Script | |||||
:zap: Dark powered Vim/Neovim plugin manager | ||||||||||
Vim Sneak | 3,003 | 3 months ago | 24 | mit | Vim Script | |||||
The missing motion for Vim :athletic_shoe: | ||||||||||
Toggleterm.nvim | 3,003 | 2 days ago | 32 | gpl-3.0 | Lua | |||||
A neovim lua plugin to help easily manage multiple terminal windows | ||||||||||
Comment.nvim | 2,748 | 7 days ago | 23 | mit | Lua | |||||
:brain: :muscle: // Smart and powerful comment plugin for neovim. Supports treesitter, dot repeat, left-right/up-down motions, hooks, and more |
Lean mean Neovim machine, 30-45ms startup time. Works best with Neovim ≥0.8
⚠️ BREAKING CHANGES: The last major update uses lazy.nvim for plugin management, and an entire Lua rewrite. Please read "Extending" to learn how to customize and modify.
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.
:Lazy
or Space+l
:Mason
or Space+mm
Optional, but highly recommended:
brew install bat
)brew install fd
)brew install fzf
)brew install ripgrep
)brew install zoxide
)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 meet the requirements.
Enjoy! 😄
Use :Mason
to install and manage LSP servers, DAP servers, linters and
formatters. See :h mason.nvim
and williamboman/mason.nvim for more
information.
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 lua/rafi/plugins/lsp/init.lua for custom key-mappings and configuration for some language-servers.
: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…
:MasonInstall vint shellcheck editorconfig-checker flake8 gitlint hadolint
:MasonInstall markdownlint mypy selene shellharden write-good yamllint
:MasonInstall black fixjson gofumpt golines isort
:MasonInstall shfmt sql-formatter stylua
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
To upgrade packages and plugins:
:Lazy update
:Mason
and press U
To update Neovim configuration from my repo:
git pull --ff --ff-only
lua/plugins.lua
)There are 2 distinct ways to extend configuration:
The first option is to fork this repository and create a directory
lua/config
with one or more of these files: (Optional)
lua/config/autocmds.lua
— Custom auto-commandslua/config/options.lua
— Custom optionslua/config/keymaps.lua
— Custom key-mappingslua/config/setup.lua
— Override config,
see extend defaults.Adding plugins or override existing options:
lua/plugins/*.lua
or lua/plugins.lua
— Plugins (See lazy.nvim for
syntax)This option is recommended if you're not planning on customizing a lot, or you'd like to keep a close look of source-code.
Create your own clean ~/.config/nvim
, and leverage lazy.nvim to import
my configuration specs. You can use LazyVim/starter and just change
lua/plugins/example.lua
to:
return {
{
"rafi/vim-config", -- Will load ALL my plugins and config/*
import = "rafi.plugins",
opts = true,
},
{ import = "plugins" }, -- Your local lua/plugins*
}
This will import and set up my lua/rafi/config/*
, lua/rafi/plugins/*
and
then yours.
If you'd rather import only specific plugins or specs, and not the entire
plugin catalog, use import
and remove opts
. For example:
return {
{
"rafi/vim-config",
import = "rafi.plugins.colorscheme"
},
{ import = "rafi.plugins.editor" },
{ import = "rafi.plugins.ui" },
{ import = "plugins" }, -- Your local lua/plugins*
}
This example will NOT load my lua/rafi/config/*
, and only install
plugins categorically from colorscheme.lua
, editor.lua
, and ui.lua
.
At last, it will load all your plugins defined in lua/plugins.lua
or
lua/plugins/*
.
This option has the advantage of partially importing different "plugin specs" from various sources.
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 {
-- Import "extras" plugins. See "Extra Plugins" in README
{ import = 'rafi.plugins.extras.ui.incline' },
-- Disable builtin plugins
{ 'shadmansaleh/lualine.nvim', enabled = false },
{ 'limorris/persisted.nvim', enabled = false },
-- Change builtin 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',
},
},
},
-- GitHub plugins
-- Choose only ONE of these statuslines ;)
{ 'itchyny/lightline.vim' },
{ 'vim-airline/vim-airline' },
{ 'glepnir/galaxyline.nvim' },
{ 'glepnir/spaceline.vim' },
{ 'liuchengxu/eleline.vim' },
}
If you are using this distro as-is, and aren't importing it externally,
create lua/config/setup.lua
and return any of these functions:
override()
lazy_opts()
For example: (Default values are shown)
local M = {}
---@return table
function M.override()
return {
defaults = {
autocmds = true, -- Load lua/rafi/config/autocmds.lua
keymaps = true, -- Load lua/rafi/config/keymaps.lua
},
features = {
elite_mode = false, -- Set arrow-keys to window resize
window_q_mapping = true, -- Disable regular window closing with 'q'
},
icons = {
-- See lua/rafi/config/init.lua for icon configuration…
},
}
end
---@return table
function M.lazy_opts()
return {}
end
return M
If you are importing this distro via lazy.nvim specs, you can use opts
.
For example:
return {
{
"rafi/vim-config",
import = "rafi.plugins",
opts = {
features = {
elite_mode = false,
window_q_mapping = true,
},
},
},
}
Note: rafi.config.options
can't be disabled here since it's loaded
prematurely. You can disable loading options.lua
with the following line at
the top of your lua/config/setup.lua
or init.lua
:
package.loaded['rafi.config.options'] = true
To override LSP configurations, you can do either:
Customize per project's .neoconf.json
Or, 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' },
},
},
},
},
}
}
Or, create a lua/lsp/<server_name>.lua
file. Must return a table with
config
function. For example, create lua/lsp/go.lua
:
local opts = {
settings = {
gopls = {
staticcheck = true
}
}
}
return {
config = function()
return opts
end
}
Note that 95% of the plugins are lazy-loaded.
Name | Description |
---|---|
neovim/nvim-lspconfig | Quickstart configurations for the Nvim LSP client |
folke/neoconf.nvim | Manage global and project-local settings |
folke/neodev.nvim | Neovim setup for init.lua and plugin development |
williamboman/mason.nvim | Portable package manager for Neovim |
williamboman/mason-lspconfig.nvim | Mason extension for easier lspconfig integration |
hrsh7th/cmp-nvim-lsp | nvim-cmp source for neovim builtin LSP client |
mhartington/formatter.nvim | Format runner |
dnlhc/glance.nvim | Pretty window for navigating LSP locations |
Name | Description |
---|---|
folke/lazy.nvim | Modern plugin manager for Neovim |
nmac427/guess-indent.nvim | Automatic indentation style detection |
christoomey/tmux-navigator | Seamless navigation between tmux panes and vim splits |
tweekmonster/helpful.vim | Display vim version numbers in docs |
lambdalisue/suda.vim | An alternative sudo for Vim and Neovim |
olimorris/persisted.nvim | Simple session management for Neovim with git branching |
RRethy/vim-illuminate | Highlights other uses of the word under the cursor |
mbbill/undotree | Ultimate undo history visualizer |
ggandor/flit.nvim | Enhanced f/t motions for Leap |
ggandor/leap.nvim | General-purpose motion plugin |
kana/vim-niceblock | Make blockwise Visual mode more useful |
haya14busa/vim-edgemotion | Jump to the edge of block |
folke/zen-mode.nvim | Distraction-free coding for Neovim |
folke/which-key.nvim | Create key bindings that stick |
folke/todo-comments.nvim | Highlight, list and search todo comments in your projects |
folke/trouble.nvim | Pretty lists to help you solve all code diagnostics |
akinsho/toggleterm.nvim | Persist and toggle multiple terminals |
simrat39/symbols-outline.nvim | Tree like view for symbols using LSP |
s1n7ax/nvim-window-picker | Window picker |
rest-nvim/rest.nvim | Fast Neovim http client written in Lua |
mickael-menu/zk-nvim | Extension for the zk plain text note-taking assistant |
nvim-pack/nvim-spectre | Find the enemy and replace them with dark power |
echasnovski/mini.bufremove | Helper for removing buffers |
mzlogin/vim-markdown-toc | Generate table of contents for Markdown files |
Name | Description |
---|---|
hrsh7th/nvim-cmp | Completion plugin for neovim written in Lua |
hrsh7th/cmp-buffer | nvim-cmp source for buffer words |
hrsh7th/cmp-path | nvim-cmp source for path |
hrsh7th/cmp-emoji | nvim-cmp source for emoji |
saadparwaiz1/cmp_luasnip | Luasnip completion source for nvim-cmp |
andersevenrud/compe-tmux | Tmux completion source for nvim-compe/cmp |
L3MON4D3/LuaSnip | Snippet Engine written in Lua |
rafamadriz/friendly-snippets | Preconfigured snippets for different languages |
ziontee113/SnippetGenie | Snippet creation tool |
danymat/neogen | Annotation generator |
echasnovski/mini.pairs | Automatically manage character pairs |
echasnovski/mini.surround | Fast and feature-rich surround actions |
JoosepAlviste/nvim-ts-context-commentstring | Set the commentstring based on the cursor location |
echasnovski/mini.comment | Fast and familiar per-line commenting |
echasnovski/mini.trailspace | Trailing whitespace highlight and remove |
echasnovski/mini.ai | Extend and create a /i textobjects |
echasnovski/mini.splitjoin | Split and join arguments |
AndrewRadev/linediff.vim | Perform diffs on blocks of code |
AndrewRadev/dsf.vim | Delete surrounding function call |
Name | Description |
---|---|
rafi/neo-hybrid.vim | Modern dark colorscheme, hybrid improved |
rafi/awesome-colorschemes | Awesome color-schemes |
AlexvZyl/nordic.nvim | Nord for Neovim, but warmer and darker |
folke/tokyonight.nvim | Clean, dark Neovim theme |
rebelot/kanagawa.nvim | Inspired by the colors of the famous painting by Katsushika Hokusai |
olimorris/onedarkpro.nvim | OneDarkPro theme |
EdenEast/nightfox.nvim | Highly customizable theme |
catppuccin/nvim | Soothing pastel theme |
nyoom-engineering/oxocarbon.nvim | Dark and light theme inspired by IBM Carbon |
Name | Description |
---|---|
lewis6991/gitsigns.nvim | Git signs written in pure lua |
sindrets/diffview.nvim | Tabpage interface for cycling through diffs |
NeogitOrg/neogit | Magit clone for Neovim |
FabijanZulj/blame.nvim | Git blame visualizer |
rhysd/git-messenger.vim | Reveal the commit messages under the cursor |
ruifm/gitlinker.nvim | Browse git repositories |
rhysd/committia.vim | Pleasant editing on Git commit messages |
Name | Description |
---|---|
hoob3rt/lualine.nvim | statusline plugin written in pure lua |
nvim-neo-tree/neo-tree.nvim | File explorer written in Lua |
nvim-telescope/telescope.nvim | Find, Filter, Preview, Pick. All lua. |
jvgrootveld/telescope-zoxide | Telescope extension for Zoxide |
rafi/telescope-thesaurus.nvim | Browse synonyms from thesaurus.com |
nvim-lua/plenary.nvim | Lua functions library |
Name | Description |
---|---|
nvim-treesitter/nvim-treesitter | Nvim Treesitter configurations and abstraction layer |
nvim-treesitter/nvim-treesitter-textobjects | Textobjects using treesitter queries |
nvim-treesitter/nvim-treesitter-context | Show code context |
RRethy/nvim-treesitter-endwise | Wisely add "end" in various filetypes |
windwp/nvim-ts-autotag | Use treesitter to auto close and auto rename html tag |
andymass/vim-matchup | Modern matchit and matchparen |
iloginow/vim-stylus | Better vim plugin for stylus |
chrisbra/csv.vim | Handling column separated data |
mustache/vim-mustache-handlebars | Mustache and handlebars syntax |
lifepillar/pgsql.vim | PostgreSQL syntax and indent |
MTDL9/vim-log-highlighting | Syntax highlighting for generic log files |
reasonml-editor/vim-reason-plus | Reason syntax and indent |
vmchale/just-vim | Syntax highlighting for Justfiles |
Name | Description |
---|---|
nvim-tree/nvim-web-devicons | Lua fork of vim-devicons |
MunifTanjim/nui.nvim | UI Component Library |
rafi/tabstrip.nvim | Minimal and opinionated tabline |
rafi/theme-loader.nvim | Use last-used colorscheme |
folke/noice.nvim | Replaces the UI for messages, cmdline and the popupmenu |
stevearc/dressing.nvim | Improve the default vim-ui interfaces |
SmiteshP/nvim-navic | Shows your current code context in winbar/statusline |
rcarriga/nvim-notify | Fancy notification manager for NeoVim |
chentau/marks.nvim | Interacting with and manipulating marks |
lukas-reineke/indent-blankline.nvim | Visually display indent levels |
tenxsoydev/tabs-vs-spaces.nvim | Hint and fix deviating indentation |
t9md/vim-quickhl | Highlight words quickly |
kevinhwang91/nvim-bqf | Better quickfix window in Neovim |
uga-rosa/ccc.nvim | Super powerful color picker/colorizer plugin |
itchyny/calendar.vim | Calendar application |
These plugins aren't enabled by default. You'll have to import them using specs. See Extend: Plugins on how to add plugins.
For example:
return {
{ import = 'rafi.plugins.extras.ui.incline' },
{ import = 'rafi.plugins.extras.org.vimwiki' },
}
Spec: rafi.plugins.extras.coding.<name>
Name | Repository | Description |
---|---|---|
autopairs |
windwp/nvim-autopairs | Autopairs for neovim written by lua |
cmp-git |
petertriho/cmp-git | Git source for nvim-cmp |
copilot |
zbirenbaum/copilot.lua | Fully featured & enhanced copilot |
editorconfig |
sgur/vim-editorconfig | EditorConfig plugin written entirely in Vimscript |
emmet |
mattn/emmet-vim | Provides support for expanding abbreviations alá emmet |
sandwich |
machakann/vim-sandwich | Search, select, and edit sandwich text objects |
Spec: rafi.plugins.extras.diagnostics.<name>
Name | Description |
---|---|
proselint |
proselint: null-ls source and mason package |
write-good |
write-good: null-ls source and mason package |
Spec: rafi.plugins.extras.editor.<name>
Name | Repository | Description |
---|---|---|
anyjump |
pechorin/any-jump.vim | Jump to any definition and references without overhead |
flybuf |
glepnir/flybuf.nvim | List buffers in a float window |
sidebar |
sidebar-nvim/sidebar.nvim | Generic and modular lua sidebar |
ufo |
kevinhwang91/nvim-ufo | Make folds look modern and keep a high performance |
Spec: rafi.plugins.extras.formatting.<name>
Name | Description |
---|---|
prettier |
prettier: null-ls source and mason package |
Spec: rafi.plugins.extras.lang.<name>
Name | Description |
---|---|
go |
go syntax, lsp, dap and test |
json |
json syntax, lsp and schemas |
python |
python syntax, lsp, dap, test and rafi/neoconf-venom.nvim |
yaml |
yaml syntax, lsp and schemas |
Spec: rafi.plugins.extras.linting.<name>
Name | Description |
---|---|
ruff |
ruff for python |
Spec: rafi.plugins.extras.lsp.<name>
Key | Name | Description |
---|---|---|
gtd |
hrsh7th/nvim-gtd | LSP's go-to definition plugin |
inlayhints |
lvimuser/lsp-inlayhints.nvim | Partial implementation of LSP inlay hint |
lightbulb |
kosayoda/nvim-lightbulb | VSCode 💡 for neovim's built-in LSP |
null-ls |
jose-elias-alvarez/null-ls.nvim | Inject LSP diagnostics, code actions, and more |
yaml-companion |
yaml-companion.nvim | Get, set and autodetect YAML schemas in your buffers |
Spec: rafi.plugins.extras.org.<name>
Key | Name | Description |
---|---|---|
vimwiki |
vimwiki/vimwiki | Personal Wiki for Vim |
Spec: rafi.plugins.extras.treesitter.<name>
Key | Name | Description |
---|---|---|
treesj |
Wansmer/treesj | Splitting and joining blocks of code |
Spec: rafi.plugins.extras.ui.<name>
Key | Name | Description |
---|---|---|
barbecue |
utilyre/barbecue.nvim | VS Code like winbar |
bufferline |
akinsho/bufferline.nvim | Snazzy tab/bufferline |
cursorword |
itchyny/cursorword | Underlines word under cursor |
cybu |
ghillb/cybu.nvim | Cycle buffers with a customizable notification window |
deadcolumn |
Bekaboo/deadcolumn.nvim | Show colorcolumn dynamically |
goto-preview |
rmagatti/goto-preview | Preview definitions using floating windows |
incline |
b0o/incline.nvim | Floating statuslines |
minimap |
echasnovski/mini.map | Window with buffer text overview, scrollbar and highlights |
statuscol |
luukvbaal/statuscol.nvim | Configurable 'statuscolumn' and click handlers |
Note that,
elite_mode
.Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
j / k | 𝐍 𝐕 | Cursor moves through display-lines | g j/k |
g+j / k | 𝐍 𝐕 𝐒 | Jump to edge upward/downward | haya14busa/vim-edgemotion |
gh / gl | 𝐍 𝐕 | Easier line-wise movement | g ^/$ |
Space+Space | 𝐍 𝐕 | Toggle visual-line mode | V / Escape |
zl / zh | 𝐍 | Scroll horizontally and vertically wider | z4 l/h |
Ctrl+j | 𝐍 | Move to split below | christoomey/tmux-navigator |
Ctrl+k | 𝐍 | Move to upper split | christoomey/tmux-navigator |
Ctrl+h | 𝐍 | Move to left split | christoomey/tmux-navigator |
Ctrl+l | 𝐍 | Move to right split | christoomey/tmux-navigator |
Return | 𝐍 | Toggle fold | za |
Shift+Return | 𝐍 | Focus the current fold by closing all others | zMzvzt |
]a or [a | 𝐍 | Next/previous on location-list | :lnext / :lprev |
]m or [m | 𝐍 | Next/previous function | nvim-treesitter-textobjects |
]s or [s | 𝐍 | Next/previous whitespace error | config/keymaps.lua |
]g or [g | 𝐍 | Next/previous Git hunk | lewis6991/gitsigns.nvim |
]] or [[ | 𝐍 | Next/previous reference | RRethy/vim-illuminate |
Ctrl+f | 𝐂 | Move cursor forwards in command | Right |
Ctrl+b | 𝐂 | Move cursor backwards in command | Left |
Ctrl+h | 𝐂 | Move cursor to the beginning in command | Home |
Ctrl+l | 𝐂 | Move cursor to the end in command | End |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
Space+cd | 𝐍 | Switch to the directory of opened buffer | :tcd %:p:h |
Space+w | 𝐍 | Write buffer to file | :write |
Ctrl+s | 𝐍 𝐕 𝐂 | Write buffer to file | :write |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
Tab / Shift-Tab | 𝐈 | Navigate/open completion-menu | nvim-cmp |
Tab / Shift-Tab | 𝐈 𝐒 | Navigate snippet placeholders | nvim-cmp |
Ctrl+Space | 𝐈 | Open completion menu | nvim-cmp |
Enter | 𝐈 | Select completion item or expand snippet | nvim-cmp |
Ctrl+p/n | 𝐈 | Movement in completion pop-up | nvim-cmp |
Ctrl+b/f | 𝐈 | Scroll documentation | nvim-cmp |
Ctrl+e | 𝐈 | Abort selection and close pop-up | nvim-cmp |
Ctrl+l | 𝐈 | Expand snippet at cursor | L3MON4D3/LuaSnip |
Space cc | 𝐍 | Generate annotations | danymat/neogen |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
gD | 𝐍 | Go to declaration | plugins/lsp/keymaps.lua |
gd | 𝐍 | Go to definition | plugins/lsp/keymaps.lua |
gr | 𝐍 | Go to references | plugins/lsp/keymaps.lua |
gy | 𝐍 | Go to type definition | plugins/lsp/keymaps.lua |
gi | 𝐍 | Go to implementation | plugins/lsp/keymaps.lua |
K | 𝐍 | Show hover help or collapsed fold | plugins/lsp/keymaps.lua |
gK | 𝐍 | Show signature help | plugins/lsp/keymaps.lua |
Ctrl+g h | 𝐈 | Show signature help | plugins/lsp/keymaps.lua |
]d or [d | 𝐍 | Jump to next/prev diagnostics | plugins/lsp/keymaps.lua |
]e or [e | 𝐍 | Jump to next/prev diagnostics | plugins/lsp/keymaps.lua |
Space cl | 𝐍 | Open LSP info window | plugins/lsp/keymaps.lua |
Space cf | 𝐍 𝐕 | Format | plugins/lsp/keymaps.lua |
Space cr | 𝐍 | Rename | plugins/lsp/keymaps.lua |
Space ce | 𝐍 | Open diagnostics window | plugins/lsp/keymaps.lua |
Space ca | 𝐍 𝐕 | Code action | plugins/lsp/keymaps.lua |
Space cA | 𝐍 | Source action | plugins/lsp/keymaps.lua |
Space uh | 𝐍 | Toggle inlay-hints | plugins/lsp/keymaps.lua |
Space ud | 𝐍 | Toggle buffer diagnostics | plugins/lsp/keymaps.lua |
Space uD | 𝐍 | Toggle global diagnostics | plugins/lsp/keymaps.lua |
,wa | 𝐍 | Add workspace folder | plugins/lsp/keymaps.lua |
,wr | 𝐍 | Remove workspace folder | plugins/lsp/keymaps.lua |
,wl | 𝐍 | List workspace folders | plugins/lsp/keymaps.lua |
gpd | 𝐍 | Glance definitions | dnlhc/glance.nvim |
gpr | 𝐍 | Glance references | dnlhc/glance.nvim |
gpy | 𝐍 | Glance type definitions | dnlhc/glance.nvim |
gpi | 𝐍 | Glance implementations | dnlhc/glance.nvim |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
Shift+Return | 𝐈 | Start new line from any cursor position | <C-o>o |
< | 𝐕 | Indent to left and re-select | <gv |
> | 𝐕 | Indent to right and re-select | `>gv |
Tab | 𝐕 | Indent to right and re-select | `>gv |
Shift+Tab | 𝐕 | Indent to left and re-select | <gv |
gc | 𝐍 𝐕 | Comment prefix | echasnovski/mini.comment |
gcc | 𝐍 𝐕 | Toggle comments | echasnovski/mini.comment |
Space+v | 𝐍 𝐕 | Toggle single-line comments | echasnovski/mini.comment |
Space+j or k | 𝐍 𝐕 | Move lines down/up | :m … |
Space+d | 𝐍 𝐕 | Duplicate line or selection | config/keymaps.lua |
Space+cp | 𝐍 | Duplicate paragraph | yap<S-}>p |
Space+cw | 𝐍 | Remove all spaces at EOL | echasnovski/mini.trailspace |
sj / sk | 𝐍 | Join/split arguments | echasnovski/mini.splitjoin |
dsf / csf | 𝐍 | Delete/change surrounding function call | AndrewRadev/dsf.vim |
I / gI | 𝐕 | Blockwise insert | kana/vim-niceblock |
A | 𝐕 | Blockwise append | kana/vim-niceblock |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
* / # | 𝐍 𝐕 | Search partial words | g* / g# |
g* / g# | 𝐍 𝐕 | Search whole-word forward/backward | * / # |
Backspace | 𝐍 | Match bracket | % |
gpp | 𝐍 | Select last paste | config/keymaps.lua |
sg | 𝐕 | Replace within selected area | :s/⌴/gc |
Ctrl+r | 𝐕 | Replace selection with step-by-step confirmation | :%s/\V/⌴/gc |
ss / SS | 𝐍 𝐕 | Leap forward/backward | ggandor/leap.nvim |
f / F / t / T | 𝐍 𝐕 | Enhanced motions | ggandor/flit.nvim |
Key | Mode | Action | Plugin 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 |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
! | 𝐍 | Shortcut for shell command | :! |
g! | 𝐍 | Read vim command into buffer | :put=execute('⌴') |
Ctrl+n / p | 𝐂 | Switch history search pairs | ↓ / ↑ |
↓ / ↑ | 𝐂 | Switch history search pairs | Ctrl n /p |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
;+dt | 𝐍 | Open TODO Telescope list | folke/todo-comments.nvim |
Space+xt | 𝐍 | Open TODO list | folke/todo-comments.nvim |
Space+xT | 𝐍 | Open TODO/FIXME list | folke/todo-comments.nvim |
Space+e | 𝐍 | Open Trouble document | folke/trouble.nvim |
Space+r | 𝐍 | Open Trouble workspace | folke/trouble.nvim |
Space+xQ | 𝐍 | Open Quickfix via Trouble | folke/trouble.nvim |
Space+xL | 𝐍 | Open Locationlist via Trouble | folke/trouble.nvim |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
Space uf | 𝐍 | Toggle format on Save | config/keymaps.lua |
Space us | 𝐍 | Toggle spell-checker | :setlocal spell! |
Space ul | 𝐍 | Toggle line numbers | :setlocal nonumber! |
Space uo | 𝐍 | Toggle hidden characters | :setlocal nolist! |
Space uu | 𝐍 | Toggle highlighted search | :set hlsearch! |
Space uw | 𝐍 | Toggle wrap |
:setlocal wrap! … |
Space ue | 𝐍 | Toggle indentation lines | lukas-reineke/indent-blankline.nvim |
Space ui | 𝐍 | Show highlight groups for word | vim.show_pos |
Space uC | 𝐍 | Select colorscheme | config/keymaps.lua |
Space un | 𝐍 | Dismiss all notifications | rcarriga/nvim-notify |
Space ur | 𝐍 | Redraw, clear hlsearch, and diff update | config/keymaps.lua |
g1 | 𝐍 | Go to first tab | :tabfirst |
g9 | 𝐍 | Go to last tab | :tablast |
g5 | 𝐍 | Go to previous tab | :tabprevious |
Ctrl+Tab | 𝐍 | Go to next tab | :tabnext |
Ctrl+ShiftTab | 𝐍 | Go to previous tab | :tabprevious |
Alt+j | 𝐍 | Go to next tab | :tabnext |
Alt+k | 𝐍 | Go to previous tab | :tabprevious |
Alt+{ | 𝐍 | Move tab backward | :-tabmove |
Alt+} | 𝐍 | Move tab forward | :+tabmove |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
;+c | 𝐍 | Open context-menu | lua/rafi/lib/contextmenu.lua |
gCtrl+o | 𝐍 | Navigate to previous file on jumplist | lib/edit.lua |
gCtrl+i | 𝐍 | Navigate to next file on jumplist | lib/edit.lua |
s+p | 𝐍 | Choose a window to edit | s1n7ax/nvim-window-picker |
s+w | 𝐍 | Switch editing window with selected | s1n7ax/nvim-window-picker |
Space l | 𝐍 | Open Lazy | folke/lazy.nvim |
Space o | 𝐍 | Open structure window | simrat39/symbols-outline.nvim |
Space f | 𝐍 | Show current structure scope in winbar | SmiteshP/nvim-navic |
Space ? | 𝐍 | Open the macOS dictionary on current word | :!open dict:// |
Space P | 𝐍 | Use Marked 2 for real-time Markdown preview | Marked 2 |
Space cp | 𝐍 | Open color-picker | uga-rosa/ccc.nvim |
Space tt | 𝐍 | Open terminal (root dir) | config/keymaps.lua |
Space tT | 𝐍 | Open terminal (cwd) | config/keymaps.lua |
Space tg | 𝐍 | Open Lazygit (root dir) | config/keymaps.lua |
Space tG | 𝐍 | Open Lazygit (cwd) | config/keymaps.lua |
Space cc | 𝐍 | Generate doc | danymat/neogen |
Space gu | 𝐍 | Open undo-tree | mbbill/undotree |
Space gd | 𝐍 | Git diff | sindrets/diffview.nvim |
Space gb | 𝐍 | Git blame | FabijanZulj/blame.nvim |
Space go | 𝐍 𝐕 | Open SCM detailed URL in browser | ruifm/gitlinker.nvim |
Space ml | 𝐍 | Append modeline to end of buffer | config/keymaps.lua |
Space mda | 𝐕 | Sequentially mark region for diff | AndrewRadev/linediff.vim |
Space mdf | 𝐕 | Mark region for diff and compare if more than one | AndrewRadev/linediff.vim |
Space mds | 𝐍 | Shows the comparison for all marked regions | AndrewRadev/linediff.vim |
Space mdr | 𝐍 | Removes the signs denoting the diff regions | AndrewRadev/linediff.vim |
Space mh | 𝐍 | Open HTTP Rest UI | rest-nvim/rest.nvim |
Space mt | 𝐍 𝐕 | Toggle highlighted word | t9md/vim-quickhl |
Space zz | 𝐍 | Toggle distraction-free writing | folke/zen-mode.nvim |
Key | Mode | Action | Plugin or Mapping |
---|---|---|---|
q | 𝐍 | Quit window (if last window, quit nvim) | :quit |
Ctrl+x | 𝐍 | Rotate window placement | C-w x |
sv | 𝐍 | Horizontal split | :split |
sg | 𝐍 | Vertical split | :vsplit |
st | 𝐍 | Open new tab | :tabnew |
so | 𝐍 | Close other windows | :only |
sb | 𝐍 | Previous buffer | :b# |
sc | 𝐍 | Close current buffer | :close |
sd | 𝐍 | Delete buffer | :bdelete |
sq | 𝐍 | Quit window | :quit |
sx | 𝐍 | Delete buffer, leave blank window | :enew │ bdelete |
sz | 𝐍 | Toggle window zoom | :vertical resize │ resize |
sh | 𝐍 | Toggle colorscheme background=dark/light | :set background … |
See echasnovski/mini.surround for more mappings and usage information.
Key | Mode | Action |
---|---|---|
ds | 𝐍 | Delete around with query |
dss | 𝐍 | Delete around automatically |
cs | 𝐍 | Change around with query |
css | 𝐍 | Change around automatically |
sa | 𝐍 𝐕 𝐎 | Trigger add operator |
sd | 𝐍 𝐕 | Trigger delete operator |
sdb | 𝐍 | Delete around automatically |
sr | 𝐍 𝐕 | Trigger replace operator |
srb | 𝐍 | Replace around automatically |
ir | 𝐕 𝐎 | Inner automatically |
ab | 𝐕 𝐎 | Around automatically |
See lewis6991/gitsigns.nvim for more mappings and usage information.
Key | Mode | Action |
---|---|---|
]g or ]g | 𝐍 | Next/previous Git hunk |
gs | 𝐍 | Preview hunk |
Space hp | 𝐍 | Preview hunk inline |
Space hb | 𝐍 | Blame line |
Space hs | 𝐍 𝐕 | Stage hunk |
Space hu | 𝐍 | Undo stage hunk |
Space hr | 𝐍 𝐕 | Reset hunk |
Space hR | 𝐍 | Reset buffer |
Space hd | 𝐍 | Toggle deleted |
Space hw | 𝐍 | Toggle word diff |
Space hl | 𝐍 | Publish hunks to location-list |
See telescope.nvim for more mappings and usage information.
Key | Mode | Action |
---|---|---|
;r | 𝐍 | Results of the previous picker |
;R | 𝐍 | List of the previous pickers |
;f | 𝐍 | File search |
;g | 𝐍 | Grep search |
;b | 𝐍 | Buffers |
;x | 𝐍 | Old files |
;v | 𝐍 𝐕 | Yank history |
;m | 𝐍 | Marks |
;n | 𝐍 | Plugins |
;j | 𝐍 | Jump points |
;k | 𝐍 | Thesaurus |
;u | 𝐍 | Spelling suggestions |
;o | 𝐍 | Vim options |
;s | 𝐍 | Sessions |
;t | 𝐍 | LSP workspace symbols |
;h | 𝐍 | Highlights |
;w | 𝐍 | Zk notes |
;z | 𝐍 | Zoxide directories |
;; | 𝐍 | Command history |
;/ | 𝐍 | 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 gl | 𝐍 | Git commits |
Space gL | 𝐍 | Git buffer commits |
Space gh | 𝐍 | Git stashes |
Space gt | 𝐍 | Find symbols matching word under cursor |
Space gf | 𝐍 | Find files matching word under cursor |
Space gg | 𝐍 𝐕 | Grep word under cursor |
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 |
Space sc | 𝐍 | Colorschemes |
Within Telescope 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 denite window |
Tab or Shift+Tab | 𝐍 𝐈 | Next/previous candidate |
Ctrl+d/u | 𝐍 𝐈 | Scroll down/upwards |
Ctrl+f/b | 𝐍 𝐈 | Scroll preview down/upwards |
J or K | 𝐍 | Select candidates up/downwards |
st | 𝐍 | Open in a new tab |
sg | 𝐍 | Open in a vertical split |
sv | 𝐍 | Open in a split |
w | 𝐍 | Smart send to quickfix list |
e | 𝐍 | Send to quickfix list |
dd | 𝐍 | Delete entry (buffer list) |
See nvim-neo-tree/neo-tree.nvim for more mappings and usage information.
Key | Mode | Action |
---|---|---|
;e | 𝐍 | Open file-explorer (toggle) |
;a | 𝐍 | Focus current file in file-explorer |
Within Neo-Tree window | ||
g? | 𝐍 | Show help |
q | 𝐍 | Close window |
j or k | 𝐍 | Move up and down the tree |
Tab or Shift+Tab | 𝐍 | Next or previous source |
]g or [g | 𝐍 | Jump to next/previous git modified node |
l | 𝐍 | Toggle collapse/expand directory or open file |
h | 𝐍 | Collapse directory tree |
Return | 𝐍 | Select window to open file |
gr | 𝐍 | Grep in current position |
gf | 𝐍 | Find files in current position |
. | 𝐍 | Set as root directory |
Backspace | 𝐍 | Change into parent directory |
sv or S | 𝐍 | Open file in a horizontal split |
sg or s | 𝐍 | Open file in a vertical split |
st or t | 𝐍 | Open file in new tab |
p | 𝐍 | Preview toggle |
a | 𝐍 | Create new directories and/or files |
N | 𝐍 | Create new directory |
r | 𝐍 | Rename file or directory |
dd | 𝐍 | Delete |
c / m | 𝐍 | Copy/move |
y / x / P | 𝐍 | Clipboard copy/cut/paste |
! | 𝐍 | Filter |
D | 𝐍 | Filter directories |
# | 𝐍 | Fuzzy sorter |
F | 𝐍 | Filter on submit |
Ctrl+c | 𝐍 | Clear filter |
Ctrl+r or R | 𝐍 | Refresh |
fi / fe | 𝐍 | Include/exclude |
H | 𝐍 | Toggle hidden files |
e | 𝐍 | Toggle auto-expand window width |
w | 𝐍 | Toggle window width |
z | 𝐍 | Collapse all nodes |
See mickael-menu/zk-nvim and zk for more mappings and usage information.
Key | Mode | Action |
---|---|---|
Space+zn | 𝐍 | Ask for title and create new note |
Space+zo | 𝐍 | Browse notes sorted by modification time |
Space+zt | 𝐍 | Browse tags |
Space+zf | 𝐍 | Search notes |
Space+zf | 𝐕 | Search notes with selection |
Space+zb | 𝐍 | Show backlinks |
Space+zl | 𝐍 | Show links |
See nvim-pack/nvim-spectre for more mappings and usage information.
Key | Mode | Action |
---|---|---|
Space+sp | 𝐍 | Open spectre window (search & replace) |
Space+sp | 𝐕 | Open spectre with selection |
See chentau/marks.nvim for more mappings and usage information.
Key | Mode | Action |
---|---|---|
m, | 𝐍 | Set the next available alphabetical (lowercase) mark |
m; | 𝐍 | Toggle the next available mark at the current line |
m a-z | 𝐍 | Set mark |
dm a-z | 𝐍 | Remove mark |
dm- | 𝐍 | Delete all marks on the current line |
dm<Space> | 𝐍 | Delete all marks in the current buffer |
m] | 𝐍 | Move to next mark |
m[ | 𝐍 | Move to previous mark |
m: a-z | 𝐍 | Preview mark |
m/ | 𝐍 | List marks from all opened buffers |