fauxClip icon indicating copy to clipboard operation
fauxClip copied to clipboard

Custom registers and clipboard support for Vim without +clipboard

fauxClip

fauxClip is a Vim plugin allowing to define custom registers, with primary goal of providing a pseudo clipboard support for versions of Vim compiled without +clipboard.


Default utilities for clipboard yank and paste are:

  • xclip (on Linux with X server, or WSL)
  • xsel (fallback to xclip)
  • pbcopy + pbpaste (on macOS)
  • clip.exe + powershell.exe Get-Clipboard (on Windows)
  • wl-copy + wl-paste (on Linux with Wayland)

Assuming you are on Linux, using Tmux, xclip is installed, and you didn't change any of fauxClip's defaults, then the dictionary with commands for registers will be set as following:

let g:fauxClip_regcmds = {
      \   '+': {
      \     'yank':  'xclip -f -i -selection clipboard',
      \     'paste': 'xclip -o -selection clipboard',
      \   },
      \   '*': {
      \     'yank':  'xclip -f -i',
      \     'paste': 'xclip -o',
      \   },
      \   ']': {
      \     'yank':  'tmux load-buffer -',
      \     'paste': 'tmux save-buffer -',
      \   }
      \ }

By manually setting any of the items you can overwrite the defaults, or craft your own registers:

let g:fauxClip_regcmds = {
      \   '!': {
      \     'paste': 'echo "Bang!"'
      \   }
      \ }

Note: to disable clipboard registers * and + you need to explicitly set them to empty strings.


To set different "register" for Tmux than ]:

let g:fauxClip_tmux_reg = 't'

If for some reason you don't want to suppress error messages from clipboard command (e.g. xclip's empty clipboard), then:

let g:fauxClip_suppress_errors = 0

If Vim is compiled with +clipboard, but you want to use custom commands regardless, then:

let g:fauxClip_always_use = 1

Installation

vim-plug:

Plug 'Jorengarenar/fauxClip'

Vim's packages

cd ~/.vim/pack/plugins/start
git clone git://github.com/Jorengarenar/fauxClip.git

Single file

curl --create-dirs -L https://raw.githubusercontent.com/Jorengarenar/fauxClip/master/plugin/fauxClip.vim -o ~/.vim/plugin/fauxClip.vim