我在 ssh 会话中的 tmux 中打开了 vim。如何让 vim 使用我笔记本电脑的系统剪贴板作为默认复制粘贴?默认值set clipboard=unamed不起作用。两个系统都是 Ubuntu,以防万一。
小智 5
如果您的终端仿真器支持剪贴板集成功能 (PASTE64/OSC52),它会很有帮助。例如,iTerm2 支持它(我不确定 Ubuntu)。
将此功能添加到您的“远程” .vimrc。猛拉东西然后跑:OscCopy。即使它在 tmux 会话中也能工作。
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()
Run Code Online (Sandbox Code Playgroud)
你需要做两件事。
在远程系统上,安装支持剪贴板的 Vim(以及剪贴板支持所需的 X 依赖项):
$ sudo apt-get install vim-gtk
Run Code Online (Sandbox Code Playgroud)在本地系统上,启动 ssh 会话并启用 X11 转发:
$ ssh -X user@hostname
Run Code Online (Sandbox Code Playgroud)
请$ man ssh参阅 X11 转发的安全影响。