在多个GUI窗口中使用Vim / Gvim


25

是否可以在同一会话中使用2个或更多(G)vim窗口,或者至少共享一些缓冲区。在此,“窗口”是指Gnome(或KDE或Windows等)窗口,而不是VIM窗口。

我将两台显示器与xinerama一起使用,并希望打开两个单独的GUI窗口,而不是拥有一个跨越多个屏幕的巨大的单个窗口。


您是否尝试过:sp <文件名>或:vsp <文件名>?这是vim的窗口拆分命令,它们很棒。 这是一些文档
Tom Stephens

2
@汤姆·史蒂芬斯(Tom Stephens):那有帮助..如何?OP希望在他的监视器上放置一个vim实例的vim窗口。OP不想在所有监视器上跨越一个vim实例。
akira

1
这个很重要; 编辑器不应该真正执行自己的窗口管理。
山姆·沃特金斯

Answers:


19

当前,gVim不能为同一进程/会话使用单独的“顶层”窗口。有一个TODO项可以在多个Vim实例之间实现进程间通信系统,以使其表现得好像单独的进程是统一的。(查看:help todo并搜索“顶级”。)


7年后的今天,Vim8仍然在待办事项列表中。
Al.G.

1
捐赠给Vim慈善机构并获得投票,然后对该功能进行投票:vim.org/sponsor/index.php
Heptite '18

3

看一下与Vim结合使用的GNU屏幕。

第一个窗口,启动gnu屏幕和vim

xterm
screen -S edit
vim

第二个窗口,连接到屏幕会话:

xterm
screen -x edit

在大型xinerama桌面,多个虚拟屏幕或VNC会话上非常有用。您只需要一个Vim会话,其中包含许多选项卡。

-汤姆


1
快速简短的教程的要点,尽管我只称其为一点用处,因为我无法以这种方式编辑同一会话的不同缓冲区。
Atilla Filiz

有趣的是,这是屏幕胜过tmux的关键点-在tmux从不同客户端附加到同一会话的情况下,您只是看到在两个实例之间镜像的事物...想通了我想做的事!
JonnyRaa

2

自从您问了问题已经有一段时间了,许多情况已经得到改善。Nvidia对Linux上的多个监视器具有更好的驱动程序支持。
自移至KDE以来,我现在已停止使用Gvim:现在,我正在使用vim-qt。如果您不想在终端中使用vim,可以使用它打开多个实例。

编辑: 我的设定


我现在正在尝试,如何使用这些多个实例?看起来像普通的gvim,对我来说却有些不同。
Atilla Filiz

您可以只启动两个vim-qt实例,以便为每个屏幕设置一个窗口,并在它们之间进行alt-tab设置,或为每个窗口分配热键。Vim-qt是为qt编写的,因此基于qt的桌面环境(例如KDE)可以更好地利用Windows。这意味着您必须打开几个不同的图形窗口,并且图形vim窗口可以全屏显示。使用常规gvim是不可能的。
jollyroger 2012年

6
感谢您抽出宝贵的时间,但这不是我想要的。我想从两个单独的GUI窗口访问相同的缓冲区。而且这是不可能的,因为缓冲区共享仍在vim的待办事项列表中(请参见接受的答案)。
Atilla Filiz

1

通过为每个会话使用单独的终端窗口,可以拥有任意多个vi(m)会话。

至于没有跨越它们,我假设您将它们置于全屏状态,然后将其设置为扩展桌面,从而在两台显示器上扩展。不要最大化它,并手动调整终端或gvim窗口大小。

如果我错过了标记,请尝试详细说明。

vim窗口是什么意思?

编辑: 这是我的屏幕的图片,其中运行了4个vim实例

希望Heptite能够成功,因为我对此感到迷茫。


1
那正是我现在正在做的,手动调整它们的大小以覆盖两台显示器,然后:vsplit,但是看起来很难看,有时我想查看不同虚拟桌面上的一些缓冲区,或者用其他东西覆盖一台显示器。我想要使​​用两个differnet终端,并且仍然从两个终端访问相同的缓冲区。
Atilla Filiz

我现在知道了。很高兴看到Heptite为您回答。
Dan M.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.