不能粘贴到的MacVim(Can't paste into MacVim)

2019-09-04 04:42发布

我从Vim之外复制文本。 ⌘V在其他应用程序粘贴文本没有问题。 在的MacVim,这是行不通的。

在插入模式下,会出现什么。 在正常模式下,我得到E353: Nothing in register + 。 发生这种情况时, set clipboard=unnamed开启或关闭。

奇怪的是,这是以前的工作。 怎么了?

Answer 1:

如果您正在使用TMUX,有时你最初通过发射的MacVim mvim命令行程序,那么你可能会遇到促使我写的问题reattach-to-user-namespace命令 。

我的猜测是,剪贴板访问工作在之前的场合,因为你碰巧已经通过“正常”的GUI方法启动的MacVim(如码头, 搜索 ,射灯等)。 剪贴板后来成为人迹罕至你不得不退出后的的MacVim事先实例,并重新启动它通过(例如) mvimTMUX会话中。

核心问题是,在某些情况下启动的程序(即TMUX会话中)与拒绝他们访问某些服务(如OS X纸板)的环境中结束。

最初推出的是这里最重要的一个。 通过启动新窗口mvim -in- TMUX(即使没有上述联包装程序)应该有机会到剪贴板只要的MacVim先前的“通过GUI”开始(也许还是有一些的MacVim打开窗户,也许你已配置的MacVim保持运行,即使在没有窗户打开)。 相应地,以重新访问您将需要关闭所有现有的MacVim窗口,退出程序,然后重新启动它在具有(通过GUI,或“内部”的包装如)访问剪贴板的方式剪贴板。

一旦你安装了上述联包装程序(它也可以通过使用MacPorts和自制),你可以使用如下命令reattach-to-user-namespace mvim以确保如果它结束了开始一个新的MacVim的实例,那么新实例将有机会到剪贴板。 您可以使用一个别名,shell函数或脚本,以确保你总是“包装” mvim

其他几个命令也从“包装”中受益( pbpastepbcopynohuplaunchctl (取决于哪个子命令使用的是)),所以你可能会想“包装”你的整个外壳,而不是单独的命令。 工艺环境的“包装”会修改由子进程继承的位,所以“包装”你的shell会影响大多数命令你运行它。 如果你正在使用TMUX,你可以配置你的default-command自动“包装”默认TMUX弹:

set-option -g default-command "reattach-to-user-namespace -l zsh"


文章来源: Can't paste into MacVim