vim:转到具有多个窗口并打开多个选项卡的特定文件

时间:2012-04-27 22:17:09

标签: windows vim vi gedit

我正在将编辑器从gedit转移到gvim。在gedit中,当我打开多个gedit窗口时,每个窗口都有多个选项卡,我可以单击Documents,它将列出所有选项卡和窗口中的所有文件,我可以通过单击列表来查看其中任何一个。

我怎样才能在gvim中这样做? gvim中的Buffers按钮仅列出当前窗口中打开的文件。

谢谢!

1 个答案:

答案 0 :(得分:1)

GVim是一个单一窗口程序。如果你有两个GUI窗口,你有两个单独的GVim进程,它们无法真正相互通信。

从“普通”编辑器切换到Vim不是在公园散步:你必须适应Vim的心态,才能使你的交换机成功。

Vim的“窗户”和“标签”命名很差,并且在新手中引起很多混乱。

在“普通”编辑器中,选项卡(或没有选项卡的GUI窗口)是文件的1:1表示,GUI窗口是选项卡/文件的集合。系统是确定性的:只要您没有关闭它,就可以将第一个窗口与Controlers/等同,第二个窗口的第二个选项卡等同Models/User.php,依此类推。因为“普通”编辑器是一个多窗口程序,并且所有这些选项卡和窗口都是一个进程的子进程,所以主进程很容易提供所有窗口和选项卡的列表。

在GVim中,两个GUI窗口由两个独立的进程创建:GUI窗口#1,因为不知道GUI窗口#2。此外,Vim的“窗口”和“标签”的概念根本不是确定性的。 “窗口”只是缓冲区的视图,此缓冲区可以是当前在内存中的任何缓冲区。 “选项卡”是一组窗口,其名称自动设置为当前在活动“窗口”中显示的缓冲区。在极端情况下,您最终可能会在x标签中的y窗口中显示相同的缓冲区。

所以,由于GVim的设计,我认为没有大量的工作可以模仿Gedit的行为。

因为它太容易了,特别是对于新用户来说,要混淆他们的“缓冲区”,“窗口”和“标签”,我建议你远离“标签”,至少暂时,并学会充分利用“缓冲”和“窗户”。

Vim的默认行为是要求您在使用另一个缓冲区替换当前窗口之前保存当前缓冲区。我想这就是很多人转向使用Vim中的标签的原因。 set hiddenset switchbuf=useopen解决了这个“问题”,并允许您在同一窗口中打开许多缓冲区。使用本机工具切换缓冲区非常简单::sb <tab>和性感/功能强大的第三方工具,如CtrlPothers。如果您习惯在不同的窗口中使用项目的不同部分(一个用于Controlers/,一个用于Models/,一个用于Views/,或一个用于后端,一个用于前端)你可以使用Vim的标签。