【问题标题】:gvim: go to a specific file with multiple windows and multiple tabs openvim:转到具有多个窗口和多个选项卡打开的特定文件
【发布时间】:2012-05-08 16:07:02
【问题描述】:

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

如何在 gvim 中做到这一点? gvim 中的 Buffers 按钮仅列出当前窗口中打开的文件。

谢谢!

【问题讨论】:

  • click 如果你想切换到 gvim/vim,你需要忘记它。我认为您的要求是不可能的,但我真的不明白为什么您需要为同一个项目设置多个窗口。
  • @draevor:如果你使用:set mouse=a,你可以用鼠标点击文本,也可以点击:tabe打开的文件名,等等……
  • @Nicolás 我并不是说用鼠标做很多事情是不可能的(特别是在启用菜单的 gvim 中),但它有点违背了目的。您将能够使用键盘更快地完成大部分(所有?)事情。
  • 将您的手移到鼠标上花费的时间已经比键盘快捷键更长,至少在 ViM 中是这样! ^^
  • 我刚刚说过在 VIM 中可以用鼠标做很多事情。一个非常不同的事情是,如果使用该设备是最好的选择,并且在使用 VIM 一段时间后,几乎任何人都会说键盘几乎总是可用的最快选择...... ^^

标签: windows vim vi gedit


【解决方案1】:

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

从“普通”编辑器切换到 Vim 并不是在公园里散步:您必须适应 Vim 的思维方式才能成功切换。

Vim 的“windows”和“tabs”名字很糟糕,给新手带来了很大的困惑。

在“普通”编辑器中,选项卡(或没有选项卡的 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 的标签页。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2020-02-21
    相关资源
    最近更新 更多