NVIM LUAU

Awesome plugins for Neovim

GitHubAdd Plugin

    Tabline

  • akinsho/bufferline.nvim
    944

    A snazzy bufferline for Neovim

  • crispgm/nvim-tabline
    19

    nvim port of tabline.vim with Lua

  • koenverburg/minimal-tabline.nvim
    2

    A minimal tabline, that's it

  • nanozuki/tabby.nvim
    381

    A declarative, highly configurable, and neovim style tabline plugin. Use your nvim tabs as a workspace multiplexer!

  • noib3/nvim-cokeline
    169

    :nose: A Neovim bufferline for people with addictive personalities

  • romgrk/barbar.nvim
    899

    The neovim tabline plugin.

  • Status Line

  • alvarosevilla95/luatab.nvim
    109

    Tabline lua plugin for neovim

  • b0o/incline.nvim
    105

    ๐ŸŽˆ Floating statuslines for Neovim

  • datwaft/bubbly.nvim
    167

    Bubbly statusline for neovim

  • feline-nvim/feline.nvim
    564

    A minimal, stylish and customizable statusline for Neovim written in Lua

  • konapun/vacuumline.nvim
    17

    A prebuilt configuration for galaxyline inspired by airline

  • NTBBloodbath/galaxyline.nvim
    118

    neovim statusline plugin written in lua

  • nvim-lualine/lualine.nvim
    1434

    A blazing fast and easy to configure neovim statusline plugin written in pure lua.

  • rebelot/heirline.nvim
    208

    Heirline.nvim is a no-nonsense Neovim Statusline plugin designed around recursive inheritance to be exceptionally fast and versatile.

  • tamton-aquib/staline.nvim
    138

    A modern lightweight statusline and bufferline for neovim in lua. Mainly uses unicode symbols for showing info.

  • windwp/windline.nvim
    280

    Animation statusline, floating window statusline. Use lua + luv make some wind

  • Keybinding

  • b0o/mapx.nvim
    141

    ๐Ÿ—บ A better way to create key mappings in Neovim.

  • folke/which-key.nvim
    1189

    ๐Ÿ’ฅ Create key bindings that stick. WhichKey is a lua plugin for Neovim 0.5 that displays a popup with possible keybindings of the command you started typing.

  • mrjones2014/legendary.nvim
    210

    ๐Ÿ—บ๏ธ A legend for your keymaps, commands, and autocmds, with which-key.nvim integration (requires Neovim nightly)

  • simrat39/rust-tools.nvim
    684

    Tools for better development in rust using neovim's builtin lsp

  • LSP

  • b0o/SchemaStore.nvim
    159

    ๐Ÿ› JSON schemas for Neovim

  • folke/trouble.nvim
    1388

    ๐Ÿšฆ A pretty diagnostics, references, telescope results, quickfix and location list to help you solve all the trouble your code is causing.

  • jose-elias-alvarez/nvim-lsp-ts-utils
    373

    Utilities to improve the TypeScript development experience for Neovim's built-in LSP client.

  • neovim/nvim-lspconfig
    3936

    Quickstart configurations for the Nvim LSP client

  • nvim-lua/lsp_extensions.nvim
    193

    Repo to hold a bunch of info & extension callbacks for built-in LSP. Use at your own risk :wink:

  • nvim-lua/lsp-status.nvim
    426

    Utility functions for getting diagnostic status and progress messages from LSP servers, for use in the Neovim statusline

  • ray-x/navigator.lua
    572

    Navigate codes like a breeze๐ŸŽ. Exploring LSP and ๐ŸŒฒTreesitter symbols a piece of ๐Ÿฐ. Take control like a boss ๐Ÿฆ.

  • williamboman/nvim-lsp-installer
    1157

    Neovim plugin that allows you to seamlessly manage LSP servers with :LspInstall. With full Windows support!

  • Guides

  • bennypowers/nvim-regexplainer
    183

    Describe the regexp under the cursor

  • nvim-lua/kickstart.nvim
    2356

    A launch point for your personal nvim configuration

  • Colorschemes

  • catppuccin/nvim
    546

    ๐Ÿจ Soothing pastel theme for NeoVim

  • dharmx/nvim-colo
    26

    Theming utlilities for neovim. This is very experimental at the moment.

  • ful1e5/onedark.nvim
    174

    Atom's iconic One Dark theme for Neovim, written in Lua

  • HUAHUAI23/nvim-quietlight
    0

    A theme for Neovim with support for LSP, Treesitter, and more.

  • kvrohit/substrata.nvim
    56

    A cold, dark color scheme for Neovim

  • lalitmee/cobalt2.nvim
    7

    cobalt2 theme for neovim in Lua using colorbuddy

  • luisiacc/gruvbox-baby
    42

    Gruvbox theme for neovim with full ๐ŸŽ„TreeSitter support.

  • mhartington/oceanic-next
    986

    Oceanic Next theme for neovim

  • Mofiqul/adwaita.nvim
    38

    Neovim colorscheme using Gnome Adwaita syntax

  • Mofiqul/dracula.nvim
    123

    Dracula colorscheme for neovim written in Lua

  • mrjones2014/lighthaus.nvim
    40

    A Lua implementation of lighthaus-theme/vim-lighthaus

  • navarasu/onedark.nvim
    270

    One dark and light colorscheme for neovim >= 0.5.0 written in lua based on Atom's One Dark and Light theme. Additionally, it comes with 5 color variant styles

  • NTBBloodbath/doom-one.nvim
    74

    doom-emacs' doom-one Lua port for Neovim

  • rebelot/kanagawa.nvim
    738

    NeoVim dark colorscheme inspired by the colors of the famous painting by Katsushika Hokusai.

  • rose-pine/neovim
    310

    Soho vibes for Neovim

  • RRethy/nvim-base16
    301

    Neovim plugin for building a sync base16 colorscheme. Includes support for Treesitter and LSP highlight groups.

  • sunjon/Shade.nvim
    374

    An Nvim lua plugin that dims your inactive windows

  • themercorp/themer.lua
    130

    A simple, minimal highlighter plugin for neovim

  • zanglg/nova.nvim
    82

    Another color scheme for neovim written in lua, WIP

  • Comment

  • danymat/neogen
    373

    A better annotation generator. Supports multiple languages and annotation conventions.

  • Utility

  • echasnovski/mini.nvim
    405

    Neovim plugin with collection of minimal, independent, and fast Lua modules dedicated to improve Neovim (version 0.5 and higher) experience

  • hood/popui.nvim
    42

    NeoVim UI sweetness powered by popfix.

  • meznaric/conmenu
    21

  • mrjones2014/dash.nvim
    132

    ๐Ÿƒ๐Ÿ’จ Search Dash.app from your Neovim fuzzy finder. Built with Rust ๐Ÿฆ€ and Lua

  • Cursor Line

  • edluffy/specs.nvim
    233

    ๐Ÿ‘“ A fast and lightweight Neovim lua plugin to keep an eye on where your cursor has jumped.

  • mg979/vim-visual-multi
    2046

    Multiple cursors plugin for vim/neovim

  • Code Runner

  • FeiyouG/command_center.nvim
    57

    Create and manage keybindings and commands in a more organized manner, and search them quickly through Telescope

  • Extras

  • folke/zen-mode.nvim
    377

    ๐Ÿง˜ Distraction-free coding for Neovim

  • goolord/alpha-nvim
    322

    a lua powered greeter like vim-startify / dashboard-nvim

  • Start Up

  • henriquehbr/nvim-startup.lua
    45

    Displays neovim startup time

  • lewis6991/impatient.nvim
    563

    Improve startup time for Neovim

  • Session

  • HUAHUAI23/telescope-session.nvim
    12

    manage your vim session with telescope ๐Ÿ”ญ

  • Fuzzy Finder

  • ibhagwan/fzf-lua
    418

    Improved fzf.vim written in lua

  • nvim-telescope/telescope.nvim
    5023

    Find, Filter, Preview, Pick. All lua, all the time.

  • vijaymarupudi/nvim-fzf
    223

    A Lua API for using fzf in neovim.

  • Misc

  • iggredible/Learn-Vim
    9061

    Learning Vim and Vimscript doesn't have to be hard. This is the guide that you're looking for ๐Ÿ“–

  • m-demare/attempt.nvim
    53

    Manage temporary buffers

  • SmiteshP/nvim-gps
    348

    Simple statusline component that shows what scope you are working inside

  • windwp/nvim-autopairs
    1479

    autopairs for neovim written by lua

  • zegervdv/nrpattern.nvim
    43

    Neovim plugin to expand incrementing/decrementing to more formats.

  • Note Taking

  • jakewvincent/mkdnflow.nvim
    97

    Tools for markdown notebook navigation and management

  • nvim-neorg/neorg
    2078

    Modernity meets insane extensibility. The future of organizing your life in Neovim.

  • Motion

  • jinh0/eyeliner.nvim
    170

    ๐Ÿ‘€ Move faster with unique f/F indicators.

  • Terminal Integration

  • jlesquembre/nterm.nvim
    35

    neovim plugin to interact with the terminal

  • Scrolling

  • karb94/neoscroll.nvim
    765

    Smooth scrolling neovim plugin written in lua

  • Git

  • kdheepak/lazygit.nvim
    313

    Plugin for calling lazygit from within neovim.

  • zegervdv/settle.nvim
    0

    Settle your merge conflicts from Neovim

  • File Explorer

  • kevinhwang91/rnvimr
    451

    Make Ranger running in a floating window to communicate with Neovim via RPC

  • kyazdani42/nvim-tree.lua
    2040

    A file explorer tree for neovim written in lua

  • Snippets

  • L3MON4D3/LuaSnip
    692

    Snippet Engine for Neovim written in Lua.

  • Browser Integration

  • lalitmee/browse.nvim
    0

    browse for anything using your choice of method

  • Indent

  • lukas-reineke/indent-blankline.nvim
    1272

    Indent guides for Neovim

  • Formatting

  • lukas-reineke/lsp-format.nvim
    248

    A wrapper around Neovims native LSP formatting.

  • Syntax

  • m-demare/hlargs.nvim/
    30

    Highlight arguments' definitions and usages, using Treesitter

  • Splits and Window

  • mrjones2014/smart-splits.nvim
    83

    ๐Ÿง  Smart, directional Neovim split resizing and navigation. Think about resizing splits in terms of "move the divider to the left/right/up/down".

  • Completion

  • noib3/nvim-compleet
    413

    :zap: An async autocompletion framework for Neovim

  • zbirenbaum/copilot-cmp
    69

    Lua plugin to turn github copilot into a cmp source

  • zbirenbaum/copilot.lua
    100

    Lua plugin for starting and interacting with github copilot

  • Package Managers

  • NTBBloodbath/cheovim
    145

    Neovim configuration switcher written in Lua. Inspired by chemacs.

  • savq/paq-nvim
    408

    ๐ŸŒš Neovim package manager

  • wbthomason/packer.nvim
    2321

    A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config

  • Game

  • ThePrimeagen/vim-be-good
    619

    vim-be-good is a nvim plugin designed to make you better at Vim Movements.

https://github.com/FeiyouG/command_center.nvim

command_center.nvim

Create and manage keymaps and commands in a more organized manner, and search them quickly through Telescope.

Demo

demo

Change log

  • Here is a GitHub issue documents breaking changes for command_center.nvim.

Table of Contents

  • Install
    • vim-plug
    • Packer
  • Usage
    • Setup and Configuration
      • Setup
      • Configuration
      • Example configuration
    • Add commands
      • command_center.add
      • command_center.mode
    • Filter
    • command_center.remove
    • command_center.converter
  • Related Projects

Install

This plugin requires Telescope.

vim-plug

Plug "nvim-telescope/telescope.nvim"
Plug "FeiyouG/command_center.nvim"

Packer

use {
  "FeiyouG/command_center.nvim",
  requires = { "nvim-telescope/telescope.nvim" }
}

Usage

Setup and Configuration

Setup

First, you will need to load this plugin as a Telescope extension. Put this somewhere in your config:

require("telescope").load_extension("command_center")

Then, you can open command-center by calling :Telescope command_center. I also use the following keybinding:

vim.cmd "nnoremap <leader>fc <CMD>Telescope command_center<CR>"

And, of course, the above keybindings can also be created in command-center-way. Keep reading the following sections.

Configuration

Configuration can be done through telescope.setup function:

require("telescope").setup {
  extensions = {
    command_center = {
      -- Your configurations go here
    }
  }
}

The following is the default configuration for command_center, and you only need to pass the settings that you want to change to require("telescope").setup:

{
  -- Specify what components are shown in telescope prompt;
  -- Order matters, and components may repeat
  components = {
    command_center.component.DESC,
    command_center.component.KEYS,
    command_center.component.CMD,
    command_center.component.CATEGORY,
  },

  -- Spcify by what components the commands is sorted
  -- Order does not matter
  sort_by = {
    command_center.component.DESC,
    command_center.component.KEYS,
    command_center.component.CMD,
    command_center.component.CATEGORY,
  },

  -- Change the separator used to separate each component
  separator = " ",

  -- When set to false,
  -- The description compoenent will be empty if it is not specified
  auto_replace_desc_with_cmd = true,

  -- Default title to Telescope prompt
  prompt_title = "Command Center",

  -- can be any builtin or custom telescope theme
  theme = require("telescope.themes").command_center,
}

Example configuration

Below is my personal configuration for command_center. You can use it as a reference.

local telescope = require("telescope")
local command_center = require("command_center")
local noremap = { noremap = true }

command_center.add({
  {
    desc = "Open command_center",
    cmd = "<CMD>Telescope command_center<CR>",
    keys = {
      {"n", "<Leader>fc", noremap},
      {"v", "<Leader>fc", noremap},

      -- If ever hesitate when using telescope start with <leader>f,
      -- also open command center
      {"n", "<Leader>f", noremap},
      {"v", "<Leader>f", noremap},
    },
  }
}, command_center.mode.REGISTER_ONLY)

telescope.setup {
  extensions = {
    command_center = {
      components = {
        command_center.component.DESC,
        command_center.component.KEYS,
      },
      sort_by = {
        command_center.component.DESC,
        command_center.component.KEYS,
      },
      auto_replace_desc_with_cmd = false,
    }
  }
}

telescope.load_extension('command_center')

Add commands

command_center.add

The function command_center.add(commands, opts) does two things:

  1. Set the keymaps (if any)
  2. Add the commands to command_center

You can find an example below:

local command_center = require("command_center")
local noremap = {noremap = true}
local silent_noremap = {noremap = true, silent = true}

command_center.add({
  {
    desc = "Search inside current buffer",
    cmd = "<CMD>Telescope current_buffer_fuzzy_find<CR>",
    keys = { "n", "<leader>fl", noremap },
  },  {
    -- If no descirption is specified, cmd is used to replace descirption by default
    -- You can change this behavior in setup()
    cmd = "<CMD>Telescope find_files<CR>",
    keys = { "n", "<leader>ff", noremap },
  }, {
    -- If no keys are specified, no keymaps will be displayed nor set
    desc = "Find hidden files",
    cmd = "<CMD>Telescope find_files hidden=true<CR>",
  }, {
    -- You can specify multiple keys for the same cmd ...
    desc = "Show document symbols",
    cmd = "<CMD>Telescope lsp_document_symbols<CR>",
    keys = {
      {"n", "<leader>ss", noremap},
      {"n", "<leader>ssd", noremap},
    },
  }, {
    -- ... and for different modes
    desc = "Show function signaure (hover)",
    cmd = "<CMD>lua vim.lsp.buf.hover()<CR>",
    keys = {
      {"n", "K", silent_noremap },
      {"i", "<C-k>", silent_noremap },
    }
  }, {
    -- You can pass in a key sequences as if you would type them in nvim
    desc = "My favorite key sequence",
    cmd = "A  -- Add a comment at the end of a line",
    keys = {"n", "<leader>Ac", noremap}
  }, {
    -- You can also pass in a lua functions as cmd
    -- NOTE: binding lua funciton to a keymap requires nvim 0.7 and above
    desc = "Run lua function",
    cmd = function() print("ANONYMOUS LUA FUNCTION") end,
    keys = {"n", "<leader>alf", noremap},
  }, {
    -- If no cmd is specified, then this entry will be ignored
    desc = "lsp run linter",
    keys = {"n", "<leader>sf", noremap},
  }
})

If you have above snippet in your config, command-center will create your specified keybindings automatically. And calling :Telescope command_center will open a prompt like this:

demo1

command_center.mode

command_center.add() will add and set the keymaps for you by default. You can use command_center.mode to override this behavior.

mode = {
  ADD = 1,      -- only add the commands to command_center
  SET = 2,      -- only set the keymaps
  ADD_SET = 3,  -- add the commands and set the keymaps
}

An example usage of command_center.mode:

local command_center = require("command_center")

-- Set the keymaps for commands only
-- This allows you to use command_center just as a convenient
-- and organized way to manage your keymaps
command_center.add({
  {
    desc = "Find files",
    cmd = "<CMR>telescope find_files<CR>",
    keys = { "n", "<leader>ff", { noremap = true } },
  }, {
    -- If keys is not specified, then this enery is ignored
    -- since there is no keymaps to set
    desc = "Search inside current buffer",
    cmd = "<CMD>Telescope current_buffer_fuzzy_find<CR>",
  }
}, {
  mode = command_center.mode.SET
})


-- Only add the commands to command_center
-- This is helpful if you already registered the keymap somewhere else
-- and want to avoid set the exact keymap twice
command_center.add({
  {
    -- If keys are specified,
    -- then they will still show up in command_center but won't be registered
    desc = "Find hidden files",
    cmd = "<CMD>Telescope find_files hidden=true<CR>",
    keys = { "n", "<leader>f.f", noremap },
  }, {
    desc = "Show document symbols",
    cmd = "<CMD>Telescope lsp_document_symbols<CR>",
  }, {
    -- The mode can be even further overridden within each item
    desc = "LSP cdoe actions",
    cmd = "<CMD>Telescope lsp_code_actions<CR>",
    keybinginds = { "n", "<leader>sa", noremap },
    mode = command_center.mode.ADD_SET,
  }
}, {
  mode = command_center.mode.ADD
})

Above snippet will only set the keymaps for "Find files" and "LSP code actions", but not for others. The resulted command_center prompt will look like this:

demo2

Filter

You can filter the commands upon invoking :Telescope command_center.

Currently, you can filter either by mode or category. You can find some examples below:

  1. Show only commands that has keymaps that work in normal mode
:Telescope command_center mode=n
  1. Show only commands that in "git" category
:Telescope command_center category=git

You can specify the category of a command as follows:

command_center.add({
  {
    description = "Open git diffview",
    cmd = "<CMD>DiffviewOpen<CR>",
    keybindings = { "n", "<leader>gd", noremap },
    category = "git",
  }, {
    description = "Close current git diffview",
    cmd = "<CMD>DiffviewClose<CR>",
    keybindings = { "n", "<leader>gc", noremap },
    category = "git",
  }, {
    description = "Toggle markdown preview",
    cmd = "<CMD>MarkdownPreviewToggle<CR>",
    keybindings = { "n", "<leader>mp", noremap },
    category = "markdown",
  }
})

-- Or you can set up the category for multiple commands at once
command_center.add({
  {
    description = "Open git diffview",
    cmd = "<CMD>DiffviewOpen<CR>",
    keybindings = { "n", "<leader>gd", noremap },
  }, {
    description = "Close current git diffview",
    cmd = "<CMD>DiffviewClose<CR>",
    keybindings = { "n", "<leader>gc", noremap },
  }, {
    -- category set in a smaller scope takes precedence
    description = "Toggle markdown preview",
    cmd = "<CMD>MarkdownPreviewToggle<CR>",
    keybindings = { "n", "<leader>mp", noremap },
    category = "markdown",
  }
}, {
  mode = command_center.mode.ADD_ONLY,
  category = "git"
})

  1. Or both
:Telescope command_center mode=n category=markdown

command_center.remove

command_center.remove(commands, opts)

You can also remove commands from command_center, with the following limitations:

  1. You need to pass in commands with the exact same desc, cmd, and keys in order to remove it from command_center.

Furthermore, you can find an example usage in the wiki page.

command_center.converter

The functions in command_center.converter can be used to convert commands used by command_center to/from the conventions used by another plugin/functions.

Current available converters are:

  • command_center.converter.to_nvim_set_keymap(commands)
  • command_center.converter.to_hydra_heads(commands)

You can find some example usage of converters in wiki page.

Related Projects

  • which-key
  • hydra
  • Telescope-command-palette
  • legendary.nvim