Cutlass overrides the delete operations to actually just delete and not affect the current yank.
It overrides the following keys to always use the black hole register: c, C, s, S, d, D, x, X.
Note that if you have already mapped these keys to something else (like we do below with x) then it will not change it again.
See here. This plugin already exists in vimscript. I hope this version in lua will be more efficient :)
(For Neovim 0.5 compatibility, you can use the compat-0.5 branch)
Install the plugin with your preferred package manager:
-- Lua
{
"gbprod/cutlass.nvim",
opts = {
-- your configuration comes here
-- or don't set opts to use the default settings
-- refer to the configuration section below
}
}
-- Lua
use({
"gbprod/cutlass.nvim",
config = function()
require("cutlass").setup({
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
})
end
})
" Vim Script
Plug 'gbprod/cutlass.nvim'
lua << EOF
require("cutlass").setup({
" your configuration comes here
" or leave it empty to use the default settings
" refer to the configuration section below
})
EOF
Cutlass comes with the following defaults:
{
cut_key = nil,
override_del = nil,
exclude = {},
registers = {
select = "_",
delete = "_",
change = "_",
},
}
cut_keyDefault : nil
After setting up this plugin, all of these operations will simply delete and not cut. However, you will still want to have a key for 'cut', which you can add by setting the cut_key value when setting up the plugin. (m or x are recommended)
This will create those bindings :
nnoremap m d
xnoremap m d
nnoremap mm dd
nnoremap M D
override_delDefault : nil
By default, this plugin doesn't remap the <Del> key to use the blackhole register (and it will work as the old x key). By setting override_del to true, <Del> key will not cut any more and not affect your current yank.
excludeDefault: {}
For some reason, you may doesn't want cutlass to override some keys, you can exclude mappings to be set by adding this to the exclude option using format "{mode}{key}".
Eg. If you want to exclude s key in normal mode, sets exclude option to { "ns" } ; If you want to exclude <bs> key in select mode, sets exclude option to { "s<bs>" }.
registersDefault:
{
select = "_",
delete = "_",
change = "_",
}
Installing cutlass.nvim will use blackhole register for delete, change and select actions.
But maybe you want to redirect to a specific register, this option allows you to
choose the register to use for each action.
E.g. using configuration below will use s register for select, d for delete
and c for change:
{
registers = {
select = "s",
delete = "d",
change = "c",
},
}
If you have svermeulen/vim-yoink installed, it will work seemlessly as original svermeulen/vim-cutlass. Just follow the integration instructions.
When you're using plugins like ggandor/lightspeed.nvim or ggandor/leap.nvim, you should not want cutlass to remap the s key. You can do this using the exclude option:
use({
"gbprod/cutlass.nvim",
config = function()
require("cutlass").setup({
exclude = { "ns", "nS" },
})
end
})
This plugin is a lua version of svermeulen/vim-cutlass (based off of vim-easyclip and also Drew Neil's ideas)
Credit to m00qek lua plugin template