系统剪贴板Vim在SSH会话中的TMUX内

时间:2017-07-21 23:04:34

标签: vim ssh tmux

我在ssh会话中的tmux里面打开了vim。如何让vim使用笔记本电脑的系统剪贴板作为默认复制粘贴?默认set clipboard=unamed无效。如果重要的话,这两个系统都是Ubuntu。

3 个答案:

答案 0 :(得分:3)

你需要做两件事。

  1. 在远程系统上,安装支持剪贴板的Vim(以及剪贴板支持所需的X依赖项):

    $ sudo apt-get install vim-gtk
    
  2. 在本地系统上,启用启用了X11转发的ssh会话:

    $ ssh -X user@hostname
    

    有关X11转发的安全隐患,请参阅$ man ssh

答案 1 :(得分:1)

剪贴板集成功能(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()

gist

答案 2 :(得分:0)

对于osc52副本,有可用的插件:

Plugin for osc52

它应该解决问题