Unix 在vim实例之间移动vim中的缓冲区
这可能吗 从概念上讲,解决方案应适用于许多可能的配置,从在tmux窗口窗格中的独立虚拟终端中运行的两个vim实例,到位于独立地理区域中独立机器上的独立终端中,一个或两个通过网络连接(换句话说,VIM由两个独立的shell进程托管,无论如何,它们已经在tmux下了) 促使我思考这个问题的案例: 我有两个tmux面板,都打开了vim,我想使用vim yank/paste跨文件复制。 但只有当我让它们都在同一个Vim实例中运行时,它才起作用,因此我不得不:Unix 在vim实例之间移动vim中的缓冲区,unix,vim,Unix,Vim,这可能吗 从概念上讲,解决方案应适用于许多可能的配置,从在tmux窗口窗格中的独立虚拟终端中运行的两个vim实例,到位于独立地理区域中独立机器上的独立终端中,一个或两个通过网络连接(换句话说,VIM由两个独立的shell进程托管,无论如何,它们已经在tmux下了) 促使我思考这个问题的案例: 我有两个tmux面板,都打开了vim,我想使用vim yank/paste跨文件复制。 但只有当我让它们都在同一个Vim实例中运行时,它才起作用,因此我不得不: 使用tmux的复制/粘贴功能完成内容(这有点
同时,我将继续进一步定制我的vim配置,并强迫自己使用尽可能少的vim实例。不,vim不能在多个实例之间共享会话。这就是它的设计方式,它不提供任何会话共享功能。寄存器、动态映射/设置、命令历史记录等都是Vi的本地内容m会话,而实际上你对此无能为力
但是你的标题有点误导:你写了“buffer”,但看起来你只是在从一个Vim实例复制/粘贴(涉及“register”,而不是“buffers”)到另一个Vim实例之后才写的。是这样吗?如果是这样的话,为什么你不简单地用剪贴板支持来获得一个正确的构建呢 在一个实例中复制/拖动实例就像在另一个实例中复制
“+y
一样简单
显然,如果您的Vim实例位于不同的系统上,这将不起作用。在这种情况下,源Vim中的“+y
,以及目标Vim中系统提供的粘贴(可能带有:set paste
)是最常见的解决方案
如果您在Mac上,请安装MacVim并将附带的
mvim
shell脚本移动到路径中的某个位置。您可以将终端中的MacVim可执行文件与mvim-v
一起使用
如果您在Linux上,请从包管理器安装vim gnome包
如果您使用的是Windows,请安装最新的“Vim With Cream”
但对我来说,整个事情看起来像一个XY问题。使用Vim的内置
:e[dit]
有效地使用命令可能是解决您潜在问题的最佳解决方案:从许多不同的shell编辑许多文件。将缓冲区写入文件,从文件插入?可以让vim使用操作系统剪贴板,但我从未成功过。删除vim搜索历史记录、vim撤消历史记录、vim命令历史记录等等(尽管看起来这是不可避免的)也可以将一个键绑定到一个函数,该函数在后台模拟中的某些文件上的缓冲区,例如/tmp
,而无需更改任何其他内容。我只使用本机操作系统GUI(无论是X还是aqua)或其他任何东西,用鼠标剪切从终端窗口选择的粘贴文本。不确定您希望vim如何做到这一点een会话。特别是当它们在不同的系统上时