无法粘贴到MacVim中

Eva*_*ahn 12 clipboard macvim

我从Vim外面复制文本.其他应用中的⌘V可以毫无问题地粘贴文本.在MacVim中,它不起作用.

在插入模式下,不显示任何内容 在普通模式下,我明白了E353: Nothing in register +.set clipboard=unnamed打开或关闭时会发生这种情况.

奇怪的是,这之前是有效的.怎么了?

Chr*_*sen 28

如果您正在使用tmux,有时您最初通过命令行程序启动MacVimmvim,那么您可能会遇到促使我编写reattach-to-user-namespace命令的问题.

我的猜测是剪贴板访问在以前的场合工作,因为你碰巧通过"普通"GUI方法(例如Dock,Finder,Spotlight等)启动了MacVim.在您退出MacVim的先前实例并通过(例如)从tmux会话内部重新启动之后,剪贴板后来变得无法访问.mvim

核心问题是在某些上下文中(即在tmux会话内)启动的程序最终会导致拒绝访问某些服务的环境(例如OS X粘贴板).

最初推出的是这里最重要的一个.mvim-in- tmux启动的新窗口(即使没有上面链接的包装程序)也可以访问剪贴板,只要MacVim之前已经"通过GUI"启动(可能仍然有一些MacVim窗口打开,或者你可能有MacVim配置为即使没有打开窗口也能继续运行).相应地,要重新获得对剪贴板的访问权限,您需要关闭所有现有的MacVim窗口,退出应用程序,然后以可访问剪贴板的方式重新启动它(例如,通过GUI或"内部"包装器).

一旦安装了上面链接的包装程序(它也可以通过MacPorts和Homebrew获得),您可以使用命令reattach-to-user-namespace mvim来确保如果它最终启动一个新的MacVim实例,那么该新实例将可以访问剪贴板.您可以使用别名,shell函数或脚本来确保始终"换行"  mvim.

其他几个命令也从"包装"中受益(pbpaste,pbcopy,nohup,launchctl(取决于哪个子命令使用的是)),所以你可能会想"包装"你的整个外壳,而不是单独的命令."包装器"修改的进程环境的位由子进程继承,因此"包装"shell将影响从中运行的大多数命令.如果您使用的是tmux,则可以配置default-command为自动"包装"默认的tmux shell:

set-option -g default-command "reattach-to-user-namespace -l zsh"
Run Code Online (Sandbox Code Playgroud)