有没有办法让Vim重新连接到不同的X服务器?

时间:2013-09-28 19:29:15

标签: vim xserver

我在tmux中使用Vim而不是远程计算机上的ssh连接。我从几个地方访问远程服务器,包括工作和家里。这通常会导致陈旧的$ DISPLAY变量和相关问题,其中大部分已解决,除了一个:

如果我已经打开了vim会话,有没有办法更改它连接的X服务器而不关闭并重新打开它?我需要能够这样做,所以我可以使用X剪贴板从Vim复制文本片段。我通常会保持多个垂直分割,换行和行号,所以通过tmux这样做通常是一个巨大的麻烦,并且更愿意使用vim。

3 个答案:

答案 0 :(得分:3)

您可以使用xpra在不同的X11服务器上显示正在运行的X11程序(特别是vim)。

该程序用于X11程序,如GNU屏幕或tmux用于终端程序。 xpra提供了一个用于运行程序的X服务器,它本身作为X服务器的X客户端,供用户显示。

你提到你正在通过tmux运行vim;你应该在tmux之外运行vim并直接使用xpra。据我所知,该程序必须从一开始就通过xpra运行。

答案 1 :(得分:2)

如果使用X的唯一目的是传输大量文本,请考虑改为使用scp

从vim中标出您感兴趣的行并执行:w /tmp/foo

从shell(或使用ctrl-z暂停vim; bg)执行

scp your_username@remotehost.edu:/tmp/foo /some/local/directory

答案 2 :(得分:1)

有一个相对较新的命令xrestore可以执行以下操作:

/* @class UIViewController */
-(void)setEditing:(bool)arg2 animated:(bool)arg3 {
    rdx = arg2;
    rdi = self;
    rax = *ivar_offset(_viewControllerFlags);
    rcx = *(rdi + rax);
    if (((rcx & 0x4) >> 0x2 ^ rdx) == 0x1) {
            stack[-8] = rbp;
            stack[-16] = r15;
            stack[-24] = r14;
            stack[-32] = r13;
            stack[-40] = r12;
            stack[-48] = rbx;
            rsp = rsp - 0x38;
            r12 = rdi;
            *(rdi + rax) = (rcx & 0xfffffffffffffffb) + (rdx & 0xff) * 0x4;
            r15 = [UIBarButtonItem alloc];
            r14 = [__UIKitBundle() retain];
            if ((rdx & 0xff) != 0x0) {
                    rax = [r14 localizedStringForKey:@"Done" value:rcx table:@"Localizable"];
                    rax = [rax retain];
                    r13 = rax;
                    rcx = 0x2;
                    rdi = r15;
                    rdx = rax;
            }
            else {
                    rax = [r14 localizedStringForKey:@"Edit" value:rcx table:@"Localizable"];
                    rax = [rax retain];
                    r13 = rax;
                    rdi = r15;
                    rdx = rax;
                    rcx = 0x0;
            }
            rbx = [rdi initWithTitle:rdx style:rcx target:0x0 action:0x0];
            [r13 release];
            [r14 release];
            [r12->_editButtonItem _setItemVariation:rbx];
            [rbx release];
    }
    return;
}

https://groups.google.com/g/vim_dev/c/G54XTJHAqXI

https://github.com/vim/vim/issues/3649