Gvim重新绘制Virtual Box和Windows 7主机的问题

Gvim 7.4在VirtualBox内部的Linux客户机上有严重的重绘问题:经常当我向上/向下滚动时,显示的文本被损坏(例如空或者有一些“漏洞”)。 我必须resize/ rescroll来清理屏幕。 我从来没有遇到与Gvim或Virtualbox类似的问题,但它使gvim几乎无法使用。

一些更多的信息:

  • Virtualbox主机分布:Windows 7 64位
  • Virtualbox版本:4.3.12与客人增加
  • Virtualbox客人分布:Linux Mint 17 Qiana 64位肉桂
  • Gvim包:vim-gtk(但也是使用vim-gnome)

任何想法如何解决这个问题?

有很多重绘问题。 下面的解决方案解决了Windows 7主机,Linux客户机和Ubuntu(或Compiz)的一个非常具体的重绘问题。

解决方案1

通过最新的Virtual Box 5.0.4&Guest Additions,Ubuntu 14.04.3,3D Acceleration测试 ,完全更新的标准安装。

a) sudo apt-get install compizconfig-settings-manager

b)从破折号运行(键入“ccsm”)。 选左边的“Utility”。 选择“解决方法”(不是复选框,点击按钮进入子类别)。 “初始损坏时强制完成重绘”应该默认打开(不确定是否相关,以防万一)。 现在ENABLE强制全屏重绘(缓冲区交换)重绘,这是默认情况下,选中。 效果是立竿见影的,如果一个gvim窗口打开,只需在选项卡之间快速点击,或者跳转文件的顶部/底部来查看其差异。

解决方案2(13.04,13.10或更低)

如果使用13.04或更低(也许13.10),首先尝试切换到Virtual Box 5.0.4+(5.0.4已测试)及其客户添加,安装CCSM并测试解决方法如上所述(我可以证实这个工作在我的旧13.04虚拟机)。

如果这不起作用或使用最新的虚拟盒/客户Additions不是一个选项,然后尝试降级客户添加到版本4.2.12 (不只是4.2.x,相信我,我已经尝试了很多版本) 注意 4.2由于新的X server版本,.12在Ubuntu 14.04.3+中不起作用。

较低的帖子(一些背景)

我经历的测试:

  • 统一2D:没有错误,但丑陋(没有阴影等)
  • 薄荷15 + CINNAMON:有bug
  • Mint 16 MATE:没有错误,但有一些滚动条问题
  • 薄荷14.1:没有错误,因为客人补充4.1.18预装..但慢!
  • …升级客户补充到4.3.6:gvim的bug重新出现! 宾果

最后,重新启动虚拟机数小时后

  • 4.2.12:没有gvim重绘的bug,对于我来说是完美的(Ubuntu 13.04,Mint 15 Cinnamon),对于一个虚拟机(半透明终端和所有3D扭曲)
  • 4.2.18:没有gvim重画错误,但由于某种原因慢
  • 4.2.20:错误!
  • 4.3.6:错误!

进一步

根据Bram Moolenaar的说法, “补丁7.3.638只是删除了一个不必要的重绘,这可能揭示了一个存在的问题” (在GTK库中)。

不过值得一提的是,我一直在使用Google Chrome,Firefox,Open Office,MySQL Workbench等一年的Ubuntu 13.04虚拟机,并且从来没有任何其他的重绘问题。 所以即使它是一个GTK错误,这个问题似乎也与VIM如何刷新窗口内容紧密相关。

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

可能是一个GTK问题,但如果它只发生在Windows 7主机…那么它似乎是GTK重绘/重绘事件和Compiz的Open GL层(我猜)之间的“同步”问题。

如何重现/测试错误

在多个选项卡中打开长文本文件(保存/加载会话可节省时间)。

然后使用Ctrl-PgUp / PgDn快速切换标签,或者通过Ctrl-Home,Ctrl-End快速从一个文件的上下移动。 在几秒钟内,您将只能看到窗口刷新的一部分。

这个问题与一些肉桂的错误有关,也许只有在启用了3D加速功能的VirtualBox里运行时才会出现。 事实上,我发现显示器也被其他应用程序(例如媒体播放器)损坏。

我通过以下步骤切换到配合窗口管理器来解决问题:

  • 安装主要队友包
  • 还安装了包装薄荷元配合
  • 注销并选择配合作为窗口管理器

现在gvim和所有其他的应用程序工作正常。

这里可能超出范围,因为我在这里使用Fedora 21 ; 但是因为这是gvim刷新问题的头号结果,所以我添加了这个注释以供以后参考。

不要犹豫,分配大量的视频内存。 我曾经玩过2D accelation以及3D accelation选项,没有任何改变。 教师派对默认情况下,我只有12Mo的视频,我把它改成了128Mo而且128Mo现在工作得很好。

我在Salix操作系统下面临同样的问题。 由于在VirtualBox中改变加速设置并不能解决问题,我发现使用GTK + 3构建gvim更容易(因为错误是由GTK + 2触发的,正如@ user4134275答案中提到的),而不是搞乱Window Manager和Desktop Environment 。