Ergonomic yank/delete history for Neovim. Access your clipboard stack using home-row letter labels.
Vim's numbered registers ("1–"9) are awkward to reach and yanks/deletes are tracked separately. You have to think ahead to save things to named registers before you need them.
bolso.nvim automatically captures all yanks and deletes into a unified LIFO stack and lets you access them through a floating picker with home-row labels: a is always the most recent, s is second, d is third, and so on.
{
'yourusername/bolso.nvim',
config = function()
require('bolso').setup()
end,
}use {
'yourusername/bolso.nvim',
config = function()
require('bolso').setup()
end,
}<leader>b— Open the bolso picker- Press a label (
a,s,d, …) — Select that entry - Press an action:
p— Paste after cursorP— Paste before cursory— Yank to system clipboard
<Esc>orq— Cancel at any point
require('bolso').setup({
-- Home-row labels (change for Dvorak, Colemak, etc.)
labels = 'asdfghjkl',
-- Maximum stack depth
max_items = 9,
-- Floating window appearance
window = {
width = 60,
border = 'rounded', -- see :h nvim_open_win
},
-- Action key bindings
actions = {
p = 'paste_after',
P = 'paste_before',
y = 'yank_to_clipboard',
},
-- Trigger keymap (set to `false` to disable, then map yourself)
keymap = '<leader>b',
})require('bolso').setup({
labels = 'aoeuhtns',
})| Command | Description |
|---|---|
:Bolso |
Open the picker |
:BolsoClear |
Clear the stack |
¶— linewise entry█— blockwise entry- (none) — charwise entry
bolso.nvim uses a single TextYankPost autocmd to capture every yank (y), delete (d), and change (c) operation that goes to the unnamed register. Consecutive duplicate entries are automatically deduplicated. The stack is purely in-memory — nothing is persisted to disk.
MIT