SSH 会话中 TMUX 中的系统剪贴板 Vim
System Clipboard Vim within TMUX within SSH session
我在 ssh 会话中 vim 打开了 tmux。如何让 vim 使用笔记本电脑的系统剪贴板作为默认的复制粘贴?默认 set clipboard=unamed
不起作用。两个系统都是 Ubuntu 以防万一。
你需要做两件事。
在您的远程系统上,安装支持剪贴板的 Vim(以及支持剪贴板所需的 X 依赖项):
$ sudo apt-get install vim-gtk
在您的本地系统上,启动启用 X11 转发的 ssh 会话:
$ ssh -X user@hostname
有关 X11 转发的安全隐患,请参阅 $ man ssh
。
剪贴板集成功能 (PASTE64/OSC52) 如果您的终端仿真器支持,它会很有帮助。比如iTerm2是支持的(我不确定Ubuntu)。
将此功能添加到您的 "remote" .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()
对于 osc52 副本,有可用的插件:
应该可以解决问题
我在 ssh 会话中 vim 打开了 tmux。如何让 vim 使用笔记本电脑的系统剪贴板作为默认的复制粘贴?默认 set clipboard=unamed
不起作用。两个系统都是 Ubuntu 以防万一。
你需要做两件事。
在您的远程系统上,安装支持剪贴板的 Vim(以及支持剪贴板所需的 X 依赖项):
$ sudo apt-get install vim-gtk
在您的本地系统上,启动启用 X11 转发的 ssh 会话:
$ ssh -X user@hostname
有关 X11 转发的安全隐患,请参阅
$ man ssh
。
剪贴板集成功能 (PASTE64/OSC52) 如果您的终端仿真器支持,它会很有帮助。比如iTerm2是支持的(我不确定Ubuntu)。
将此功能添加到您的 "remote" .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()
对于 osc52 副本,有可用的插件:
应该可以解决问题