Gvim перерисовывает проблемы с виртуальной коробкой и хостом Windows 7

Gvim 7.4 в гостевой системе Linux внутри VirtualBox имеет серьезные проблемы с перерисовкой: часто, когда я прокручиваю вверх / вниз, показанный текст искажается (например, пустой или с некоторыми "дырами"). И я должен изменить размер / повторно прокрутить, чтобы очистить экран. Я никогда не сталкивался с подобной проблемой ни с Gvim, ни с Virtualbox, но это делает gvim практически непригодным для использования.

Некоторая дополнительная информация:

  • Virtualbox host distribution: Windows 7 64 bit
  • Virtualbox version: 4.3.12 with guest additions
  • Virtualbox guest distribution: Linux Mint 17 Qiana 64-bit Cinnamon
  • Gvim package: vim-gtk (but it happens using vim-gnome too)

Есть идеи, как решить эту проблему?

4 ответа

Решение

Эта проблема связана с некоторой ошибкой Cinnamon, которая может отображаться только при запуске в VirtualBox с включенным 3D-ускорением. Фактически я обнаружил, что дисплей был поврежден и для других приложений (например, медиаплеер).

Я решил проблему, переключившись на диспетчер окон Mate, выполнив следующие действия:

  • Установлены основные сопутствующие пакеты
  • Установлен также пакет mint-meta-mate
  • Выйти из системы и выбрать Mate в качестве оконного менеджера

Теперь gvim и все остальные приложения работают нормально.

Есть много проблем с перерисовкой. Решения, приведенные ниже, решают очень специфическую проблему перерисовки с хостом Windows 7, гостем Linux и Ubuntu (или Compiz).

Решение 1

Протестировано с последней версией Virtual Box 5.0.4 и гостевыми дополнениями, Ubuntu 14.04.3, 3D ускорение включено, стандартная установка с полными обновлениями.

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

б) Запустите его из тире (наберите "ccsm"). Выберите "Утилита" слева. Выберите "Обходные пути" (НЕ флажок, нажмите кнопку, чтобы войти в подкатегорию). "Принудительно завершить перерисовку при начальном повреждении" должно быть включено по умолчанию (не уверен, если актуально, на всякий случай). Теперь ENABLE Принудительно перерисовывает весь экран (перестановка буфера) при перерисовке, которая по умолчанию не включена. Эффект мгновенный, если окно gvim открыто, просто быстро нажимайте между вкладками или переходите вверх / вниз по файлам, чтобы увидеть разницу.

Решение 2 (для 13.04, 13.10 или ниже)

Если используется 13.04 или ниже (возможно, также 13.10), сначала попробуйте переключиться на Virtual Box 5.0.4+ (протестирован 5.0.4) и его гостевые дополнения, установить CCSM и протестировать обходной путь, как описано выше (я могу подтвердить, что это сработало). на моей старой 13.04 вм).

Если это не сработает или использование последней версии Virtual Box / Guest Additions не подходит, попробуйте понизить версию Guest Additions до версии 4.2.12 (не только до 4.2.x, поверьте мне, я пробовал много версий)..12 не будет работать в Ubuntu 14.04.3+ из-за более новой версии X Server.

Предыдущий пост ниже (немного предыстории)

Тесты, которые я прошел:

  • Unity 2D: без ошибок, но безобразно (без теней и т. Д.)
  • Монетный двор 15 + корица: есть ошибка
  • Mint 16 MATE: нет ошибок, но есть проблемы с полосой прокрутки
  • Mint 14.1: без ошибок, потому что гостевые дополнения 4.1.18 предустановлены... но МЕДЛЕННО!
  • ... обновление гостевых дополнений до 4.3.6: ошибка gvim появляется снова! <- бинго

Наконец, после нескольких часов перезагрузки виртуальных машин...

  • 4.2.12: нет ошибки перерисовки gvim, отлично работает для меня (Ubuntu 13.04, Mint 15 Cinnamon), относительно гладкая для виртуальной машины (с полупрозрачным терминалом и всеми трехмерными перегибами)
  • 4.2.18: нет ошибки перерисовки gvim, но по какой-то причине МЕДЛЕННО
  • 4.2.20: ошибка!
  • 4.3.6: ошибка!

В дальнейшем

По словам Брэма Муленаара, "патч 7.3.638 просто удалил ненужную перерисовку, которая, вероятно, обнаружила существующую проблему" (с библиотекой GTK).

Однако стоит упомянуть, что я уже год пользуюсь виртуальной машиной Ubuntu 13.04 с Google Chrome, Firefox, Open Office, MySQL Workbench и т. Д., И у меня никогда не было проблем с перерисовкой. Поэтому, даже если это ошибка GTK, это проблема, которая тесно связана с тем, как VIM обновляет содержимое окна.

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

Может быть проблема с GTK, но если это происходит только с хостами Windows 7... тогда, похоже, это проблема "синхронизации" между событиями перерисовки / перерисовки GTK и уровнем Open GL в Compiz (мое предположение).

Как воспроизвести / проверить ошибку

Открывайте длинные текстовые файлы на нескольких вкладках (сохранение / загрузка сеанса экономит время).

Затем быстро переключайтесь между вкладками с помощью Ctrl-PgUp / PgDn или быстро перемещайтесь сверху вниз по файлу с помощью Ctrl-Home, Ctrl-End. Через несколько секунд вы увидите только часть обновления окна.

Я столкнулся с той же проблемой под ОС Salix. Поскольку изменение настроек ускорения в VirtualBox не решило проблему, я считаю, что проще создать gvim с GTK+ 3 (поскольку ошибка была вызвана GTK+ 2, как указано в ответе @user4134275), чем возиться с Window Manager и средой рабочего стола,

Может быть вне области, так как я использую Fedora 21 Вот; но так как это результат № 1 для обновления gvim, я добавляю это примечание для дальнейшего использования.

Не стесняйтесь выделять много видеопамяти. Я играл с 2D accelation так же как 3D accelation вариант без единого изменения. Gulty party состояла в том, что по умолчанию у меня было только 12Mo видео, я изменил его на 128Mo и теперь все работает хорошо.

Другие вопросы по тегам