๐Ÿงฉ zshow.nvim

May 19, 2026 ยท View on GitHub

A simple plugin for viewing installed plugins managed by zpack.nvim.

It opens a floating window, listing plugins grouped by their load status and allows opening their corresponding repo, whether remote or local.


โœจ Features

  • Plugins sorted according to their load status:
    • Loaded
    • Not loaded (lazy = true or cmd/event/ft/keys defined in zpack Spec)
    • Disabled (cond = false)
  • Press K on a plugin name to open its git repo on a web browser
    • local repos are opened with :tabedit instead
  • Update all plugins by pressing u
    • pressing U while hovering over a plugin name will update that plugin only.
    • see :h LspProgress for how to set up update notifications.
  • Quickly close the window with q or <Esc>

Note

For plugins to show up as "Disabled" they must have cond = false in their spec. Plugins with enabled = false become invisible to both zshow and zpack.

Github couldn't load the preview; view it on Gitlab instead


๐Ÿ“ฆ Requirements


๐Ÿš€ Installation

Using zpack.nvim:

---@type zpack.Spec
return {
    -- 'sairyy/zshow.nvim',
    -- uncomment the line above and comment the one below for the GitHub mirror
    src = 'https://gitlab.com/sairy/zpack.nvim',
    lazy = false, -- no need for lazy loading
    init = function()
        vim.g.zshow_opts = {
            -- your config here
        }
    end
}

It doesn't make much sense to use this plugin with managers other than zpack.


โš™๏ธ Configuration

No configuration is needed to just use the plugin, but the vim.g.zshow_opts variable can be used to customize some UI elements.

Alternatively, you can use the provided setup() function, which just sets its table argument as the value for vim.g.zshow_opts.

require('zshow').setup(opts) -- will set `vim.g.zshow_opts = opts`

Default configuration

{
    winblend = 0,   -- window pseudo-transparency
    width = 0.6,    -- window width as a % of neovim's width
    height = 0.6,   -- window height as a % of neovim's height

    -- dim windows behind zshow's window
    backdrop = {
        enable = false,
        -- only take effect if `enable` set to true
        winblend = 50,                  -- how much to dim by
        respect_transparent_bg = true,  -- only dim if background isn't transparent
    },

    formatting = {
        listchars = { 'โ—', 'โ—‹' },   -- characters to use in listings based on nesting level
        show_version = true,        -- display git commit SHA
        short_sha = true,           -- use short commit SHA if `show_version = true`
    },

    -- same options as |nvim_open_win()|
    -- if win_config.{width,height} are supplied, they override the above
    -- `width` and `height` fields
    win_config = {
        zindex = 50,
        title = ' Plugins ',
        title_pos = 'center',
    },
}

๐ŸŒˆ Highlights

HighlightWhatDefault
ZShowListItemListing nest indicators ('โ—', 'โ—‹')Character, bold
ZShowSectionNameName of the section (Loaded, etc.)NormalFloat, bold
ZShowPluginPlugin nameNormalFloat
ZShowPluginCountPlugin count numberComment
ZShowGitShaPlugin git SHAComment
ZShowBackdropWindow backdrop (if enabled)bg = #000000

๐Ÿ›  Commands and Keymaps

zshow.nvim provides the command ZShow to open the plugin window.

Inside the window, the following mappings are available:

  • q / <Esc>: close the window
  • K: open the git repo of the plugin on top of the cursor
    • uses vim.ui.open for remote plugins
    • local repos are opened with :tabedit instead
  • u: update all plugins
  • U: update the plugin on top of the cursor

Note

The two update mappings above try to update plugins without user confirmation. If you wish to review changes first, use :ZPack update like usual.

No global keymaps are created by default, but you can add your own:

vim.keymap.set('n', '<leader>zs', '<cmd>ZShow<cr>', { desc = 'View installed plugins' })

vim.keymap.set('n', '<leader>zo', function()
    require('zshow').open {
        -- values passed here will temporarily override those set
        -- via `vim.g.zshow_opts`
    }
end, { desc = 'View installed plugins' })

๐Ÿค Contributing

Feel free to open an issue or submit an MR if you find a bug or have any suggestions.


๐Ÿ“‹ References