【问题标题】:Possible to use Cmd+c to copy vim selection?可以使用 Cmd+c 复制 vim 选择吗?
【发布时间】:2018-08-27 13:08:35
【问题描述】:

我一直在寻找从 vim 复制到我的系统剪贴板的方法。我已经阅读了“How to copy to clipboard in vim”这个问题,从中我可以看出我必须使用+clipboard 编译 Vim。

这对我来说不是一个选项,在远程服务器上工作时,所以现在,我必须切换到鼠标进行选择,以使我的系统将选择视为选择。简单地通过 Vim 进行 visual 选择是行不通的。

所以我的问题是这样的; 是否可以让我的系统将 Vim 所做的选择(例如使用 viw)视为可以使用 cmd-c 复制到剪贴板的内容?

我正在使用 Mac OS High Sierra,运行 iTerm 2。

【问题讨论】:

    标签: macos vim clipboard copy-paste iterm2


    【解决方案1】:

    我有一辆没有轮子的车,它还能开吗? 好吧,答案是否定的,除非你绑上某种轮子或类似的东西。

    xclip 可能是一个解决方案 (:'<,'>w !xclip -i) 但如果你可以安装东西,安装适当版本的 vim 会更容易。

    【讨论】:

    • 可能是 $HOME 本地 xclip 版本或任何可以处理系统剪贴板的 python 脚本。有一个来自 Derek Wyatt 的例子,他展示了一种处理外部命令的有趣方式 -> derekwyatt.org/vim/tutorials/advanced/#expression-register
    • @SergioAraujo 应该可以使用本地版本的 xclip,就像本地版本的 vim 一样。 python 方法很有趣,但在我的简短(我的意思是很短,可能是错误的)研究中,python 似乎还需要某种工具来访问剪贴板(或至少是一个库)源:stackoverflow.com/questions/11063458/…跨度>
    • 好吧,如果他像他说的那样在远程服务器上,并且他运行xclip,那不会将它复制到远程服务器的剪贴板吗?
    • @ChatterOne 这是真的。我试图回答的中心部分是“没有剪贴板支持的 vim”部分,而不是遥控器。我的回答是:“你需要某种工具/脚本来处理它”。您的方法似乎是这样的脚本和工具(iterm)。所以我的答案似乎仍然是正确的,即使你的答案更有希望,而且如果它更有帮助,因此更好。
    【解决方案2】:

    使用xclip 的想法只有在您使用本地计算机时才有效。

    如果您在远程服务器上并使用xclip,它会将文本复制到远程剪贴板,使其在本地不可用。

    有一些方法可以解决这个问题,您可以从this post 进行调整,可以总结为:

    • 使用和 ANSI 转义序列

    • 设置与服务器的通信和 SSH 隧道(是的,并不复杂,但相当复杂)

    第一种方法其实很简单,因为你只需要在iTerm的通用偏好中开启从终端访问剪贴板,然后如果你这样做了

    printf "\033]52;c;$(printf "%s" "YOUR_CLIPBOARD" | base64)\a"

    然后文本YOUR_CLIPBOARD 将被复制到您的本地剪贴板中,即使您在远程服务器上。

    您所要做的就是将 printf 放入一个 shell 脚本中,该脚本将您想要的内容作为输入,并映射您想要运行脚本的任何快捷方式,并将所选内容作为参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2015-05-26
      相关资源
      最近更新 更多