为什么在某些操作后gVim会重新调整大小和位置?

12
我几周前开始使用 gVim,但很快发现在执行某些操作时,整个 gVim 窗口会出现奇怪的缩放。我认为这可能与我在 Windows 7 x64 系统上使用的 Aero Snap 有关。

重现步骤(使用空的 .vimrc 文件和将我的 vimfiles 文件夹重命名):

  1. 打开 gvim
  2. 使用 (a few taps on) win+left arrow 将 gvim 窗口放置在显示器的左侧
  3. 使用 :tabe 创建一个新选项卡

结果: gVim 重新定位到屏幕上的其他位置。所以我必须使用 win+left arrow 重新定位它。非常烦人。

我使用其他选项卡和窗口操作也遇到了同样的问题,例如::vnewC-W o,...

有没有人知道为什么会出现这种情况,以及我该怎么做才能解决它?我已经清空了我的 .vimrc 文件,并临时将我的 ~/vimfiles 文件夹重命名,以排除任何插件的干扰。

编辑:根据 Matthew 的回复和 :help bugs 中的信息,我向 bugs@vim.org 发送了一个错误报告(实际上是这篇文章)。


@Ingo:是的,Vim 7.3.46。谢谢提供链接,但目前没有切换到一个0.01项目的意图。 - Rabarberski
抱歉,那个SourceForge链接已经过时了;这是一个更好的链接。Cream项目紧密跟踪Vim的开发进展;这是获取新的Windows二进制文件而无需自行编译的最简单方法。http://sourceforge.net/projects/cream/files/Vim/ - Ingo Karkat
2
gvim在某些情况下可以执行此类操作,如果您的操作正在添加或删除垂直滚动条,请尝试“:set guioptions?” 如果它包括L或R,则可能是罪魁祸首。(请注意,L在默认设置中。)另外,您应该升级到更高版本,因为自7.3.46以来,这个领域肯定至少有一个错误被修复了。“没有奶油的Vim”安装程序是众所周知的可靠且保持最新状态,并提供不带Cream项目插件的Vim。 - lessthanideal
哦,太好了!我已经提供了下面的答案,现在再加上一些细节重复一遍 :) - lessthanideal
1
重要更新:从guiptions中删除L可以修复与窗口(例如执行:vnew时)的行为,但不能修复选项卡。为了修复选项卡操作(如:tabe)的行为,我必须删除e选项(这只是提供了更简单的选项卡)。升级到“无奶油”的vim 7.3.709并没有解决这两个问题。 - Rabarberski
显示剩余9条评论
2个回答

9

在某些情况下,gvim可以使用guioptions的值来控制GUI控件的显示和隐藏,例如滚动条或选项卡标签。尝试命令:set guioptions?

如果显示的值包括“L”或“R”(可选择显示垂直滚动条),那么可能是问题的原因,您可以按照以下说明删除该选项。

如果它包括“e”,特别是如果:set showtabline?显示选项= 1,则也可能会导致问题,您可以使用以下方法更改任一设置。(在这种情况下,选项卡标签行仅在至少有两个选项卡时才会出现。)

如果不是这两者中的任何一个,请尝试查看GUI的哪些部分在问题发生时出现和消失,然后找到控制该行为的选项。

解决方案示例:如果问题值为“L”:

“L”是默认设置中的一部分(来自帮助文档)。

"egmrLtT"   (MS-Windows),
"aegimrLtT" (GTK, Motif and Athena).

您可以运行以下命令来修复它:
:set guioptions-=L  "just remove L
:set guioptions=egmrtT    "explicitly set the options you want, as noted you might want to remove 'e' as well

您可以将以下命令之一添加到您的 .vimrc 文件中,以始终设置它。


您应该升级到更高版本,因为在 7.3.46 之后已经修复了这个区域至少一个 bug。尽管如此,在 7.3.703 中仍然存在问题。

"Vim without Cream" 安装方式已被广泛认可为可靠且保持最新状态,并提供不带 Cream 项目附加组件的 Vim。未来的读者可能会发现通过升级解决了这些 bug。


1
请查看我关于删除L选项(用于Windows)和e选项(用于制表符)的问题下面的评论。 - Rabarberski
更新答案以考虑更一般的情况。 - lessthanideal

4

刚刚合并了一个pull request到Vim 8.0.1278中。您现在可以将以下行添加到配置文件中以减轻此问题:

  • guioptions+=k

这样做可以避免在添加垂直分割、选项卡等时调整窗口大小。这通常使窗口大小更加一致,但也可以避免当Vim窗口固定在左/右侧时触发调整大小问题。

如果您不想使用这个新选项,则问题在于Vim的调整大小方式。在Windows版本中,它使用恢复的窗口位置(与固定在右/左侧时不同,因为它处于最大化模式),因此无论出于何种原因尝试调整Vim的大小,它都会将位置重置为恢复的窗口位置。这里有进一步的讨论:https://github.com/vim/vim/issues/2180


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接