linux - Virtual Box 和 Windows 7 主机的 Gvim 重绘问题

标签 linux vim gtk virtualbox cinnamon

VirtualBox 内的 Linux 客户机上的 Gvim 7.4 有严重的重绘问题:当我向上/向下滚动时,显示的文本经常被损坏(例如,空的或有一些“洞”)。而且我必须调整大小/重新滚动以清洁屏幕。我从来没有遇到过类似的问题,无论是 Gvim 还是 Virtualbox,但这使得 gvim 几乎无法使用。

一些进一步的信息:

  • Virtualbox 主机分布:Windows 7 64 位
  • Virtualbox 版本:4.3.12 guest 添加
  • Virtualbox guest 发行版:Linux Mint 17 Qiana 64 位 Cinnamon
  • Gvim 包:vim-gtk(但碰巧也使用 vim-gnome)

知道如何解决这个问题吗?

最佳答案

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

解决方案一

使用最新的 Virtual Box 5.0.4 和 Guest Additions、Ubuntu 14.04.3、启用 3D 加速、标准安装和完整更新进行测试。

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

b) 从破折号运行它(键入“ccsm”)。选择左侧的“实用程序”。选择“解决方法”(不是复选框,单击按钮进入子类别)。 “Force complete redraw on initial damage”应该默认开启(不确定是否相关,以防万一)。现在启用在重绘时强制全屏重绘(缓冲区交换),默认情况下未选中。效果是立竿见影的,如果 gvim 窗口打开,只需在选项卡之间快速单击,或跳转到文件的顶部/底部以查看差异。

解决方案 2(适用于 13.04、13.10 或更低版本)

如果使用 13.04 或更低版本(也可能是 13.10),首先尝试切换到 Virtual Box 5.0.4+(5.0.4 已测试)及其 Guest Additions,安装 CCSM 并测试上述解决方法(我可以确认这适用于我的旧 13.04 VM)。

如果这不起作用或者使用最新的 Virtual Box/Guest Additions 不是一个选项,那么尝试将 Guest Additions 降级到版本 4.2.12(不仅仅是 4.2.x,相信我,我已经尝试了很多版本)注意由于较新的 X Server 版本,4.2.12 无法在 Ubuntu 14.04.3+ 中运行。

下面的旧帖子(一些背景)

我经历的测试:

  • Unity 2D:没有错误,但很丑(没有阴影等)
  • Mint 15 + CINNAMON:有错误
  • Mint 16 MATE:没有错误,但有一些滚动条问题
  • Mint 14.1:没有错误,因为预装了 guest additions 4.1.18..但是很慢!
  • ... 将 guest 添加升级到 4.3.6:gvim 错误再次出现! <-- bingo

最后,经过数小时的重启虚拟机...

  • 4.2.12:没有 gvim 重绘错误,非常适合我(Ubuntu 13.04、Mint 15 Cinnamon),对于虚拟机来说相对流畅(具有半透明终端和所有 3D 问题)
  • 4.2.18 : 没有 gvim 重绘错误,但由于某些原因很慢
  • 4.2.20:错误!
  • 4.3.6:错误!

进一步

根据 Bram Moolenaar “补丁 7.3.638 只是删除了一个不必要的重绘,这可能会发现一个现有的问题”(使用 GTK 库)。

不过值得一提的是,我在 Ubuntu 13.04 VM 上使用 Google Chrome、Firefox、Open Office、MySQL Workbench 等一年了,从未遇到过任何其他重绘问题。因此,即使它是一个 GTK 错误,它也是一个似乎与 VIM 如何刷新窗口内容密切相关的问题。

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

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

如何重现/测试错误

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

然后使用 Ctrl-PgUp/PgDn 在选项卡之间快速切换,或者使用 Ctrl-Home、Ctrl-End 快速从文件的顶部移动到底部。在几秒钟内,您将只看到窗口刷新的一部分。

关于linux - Virtual Box 和 Windows 7 主机的 Gvim 重绘问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018843/

相关文章:

vim 在搜索和替换表达式中使用变量的内容

vim - 在 Vim 中打开特定文件的快捷方式?

python - 在 PyGTK 中,如何使用线程?

linux - 如何从 list 文件调用/包含 IP 地址到 ansible playbook

linux - 查找命令表达式错误

linux - 使用 key 和密码自动登录 SFTP

python - Vim 对 Python 代码的缩进错误(使用 python-mode 插件)

c# - Gtksharp编程问题

gtk - 确定可见 Gtk.FlowBox 子项的数量

linux - wifi数据包捕获有什么限制?