I have vim open inside tmux inside an ssh session. How can I make vim use my laptop\'s system clipboard as the default copy paste? The default set clipboard=unamed
Clipboard integration feature (PASTE64/OSC52) is helpful if your terminal emulator supports it. For example, iTerm2 supports it (I am not sure about Ubuntu).
Add this function to your "remote" .vimrc
.
yank something and run :OscCopy
. It works even it is inside tmux session.
function! OscCopy()
let encodedText=@"
let encodedText=substitute(encodedText, '\', '\\\\', "g")
let encodedText=substitute(encodedText, "'", "'\\\\''", "g")
let executeCmd="echo -n '".encodedText."' | base64 | tr -d '\\n'"
let encodedText=system(executeCmd)
if $TMUX != ""
"tmux
let executeCmd='echo -en "\x1bPtmux;\x1b\x1b]52;;'.encodedText.'\x1b\x1b\\\\\x1b\\" > /dev/tty'
else
let executeCmd='echo -en "\x1b]52;;'.encodedText.'\x1b\\" > /dev/tty'
endif
call system(executeCmd)
redraw!
endfunction
command! OscCopy :call OscCopy()
gist
For the osc52 copy, there's plugin available:
Plugin for osc52
it should solve the issue
You need to do two things.
On your remote system, install a clipboard-aware Vim (and the X dependencies needed for clipboard support):
$ sudo apt-get install vim-gtk
On your local system, start your ssh session with X11 forwarding enabled:
$ ssh -X user@hostname
See $ man ssh
for the security implications of X11 forwarding.