I cannot copy into the +
or *
register.
:echo has('clipboard')
from within Vim returns 0
meaning I don't have that feature flag, I don't want to recompile.
I'm running wayland so I cannot use X11 based solutions
I cannot copy into the +
or *
register.
:echo has('clipboard')
from within Vim returns 0
meaning I don't have that feature flag, I don't want to recompile.
I'm running wayland so I cannot use X11 based solutions
I had trouble finding resources so here is what ended up working by adding in ~/.vimrc
.
nnoremap <C-@> :call system("wl-copy", @")<CR>
wl-copy
is a Command-line copy/paste utilities for Wayland and it will copy the piped content you give it to system clipboard.
What mapping above achieves is
Ctrl + @
. or choose any convenient key combo
nnoremap <C-@>
take the contents of the "
register,
@"
argumentand pipe contents of @"
as an argument to the system wl-copy
function
:call system("wl-copy", @")
.Assuming you only want to copy line sections of the file, do shift
+v
to go into visual mode and only highlight the lines I want to copy. Then do.
:'<,'>w !wl-copy
where
'<,'>
- means you used visual mode to select a range (you don't type this)w !{cmd}
- write the range to the stdin of cmd
, see more at :help w_c
You can map that with
xnoremap <silent> <C-@> :w !wl-copy<CR><CR>
xnoremap
: mapping will work in visual mode only<silent>
: mapping which will not be echoed on the command line<C-@>
: desired key combination :w !{cmd}
: write the range to the stdin of cmd
<CR><CR>
: two enters are needed otherwise command line waits for another commandInstall the wl-clipboard
package.
Then, adding this to ~/.config/nvim/init.vim
(NeoVIM) works well for me:
set clipboard=unnamed
let g:clipboard = {
\ 'copy': {
\ '+': ['wl-copy', '--trim-newline'],
\ '*': ['wl-copy', '--trim-newline'],
\ },
\ 'paste': {
\ '+': ['wl-paste', '--no-newline'],
\ '*': ['wl-paste', '--no-newline'],
\ },
\ }
wl-clipboard
is installed then it is automagically selected. Make sure to restart neovim after installing. –
Barocchio The feature the author is asking for will be hopefully implemented in vim. See for details: https://github.com/vim/vim/issues/5157
There is also a workaround plugin: https://github.com/jasonccox/vim-wayland-clipboard
As for me, I'm using my own workaround:
" Yank into all these at once:
" vim y/p register
" wayland primary
" wayland clipboard
xnoremap <silent> <leader>y y:call system("wl-copy --trim-newline", @*)<cr>:call system("wl-copy -p --trim-newline", @*)<cr>
If you are using neovim, it automatically uses wl-copy under wayland, so after wl-copy is installed everything shall work without additional cofigs.
Still no working solution here https://github.com/vim/vim/issues/5157
Here is my workaround:
set clipboard=unnamed,unnamedplus
augroup wl-clipboard
autocmd!
autocmd FocusLost * :call system('wl-copy --trim-newline', @+)
autocmd FocusGained * :let @+ = system('wl-paste -n')
augroup END
I do prefer keeping the default mappings and make then use the wl-copy and wl-paster commands:
" Copy with Wayland
xnoremap <silent> y :w !wl-copy<CR><CR>
" Paste from Wayland
noremap <silent> p :r !wl-paste<CR><CR>
© 2022 - 2025 — McMap. All rights reserved.
wl-clipboard
installed, neovim automagically uses it – Barocchio