1

Я много пользуюсь screen . Одним из моих мотивов является обещание, что мои сеансы редактирования (например, экземпляр vim) переживут крах X. Хотя сеанс screen действительно превышает X, я обнаружил, что после перезапуска X его нельзя использовать полностью. В частности, vim похоже, приобретает некоторые странные сбои, например, не удается правильно перерисовать экран; также я не могу увидеть текст, который выводится командой оболочки (например :!ls)

Я использую Ubuntu 10.04 для сборки пакета vim-gnome . Это версия 7.2.330-1ubuntu3 . Вероятно, важно, чтобы эту версию vim можно было запускать как приложение с графическим интерфейсом GNOME2 или как консольное приложение. Даже при запуске из консоли он каким-то образом интегрируется с X, например, обеспечивая доступ к буферу обмена.

Есть ли какой-нибудь способ предотвратить возникновение этих проблем или выйти из этого состояния?

Список симптомов, отмеченных в случаях vim которые пережили крах X:

  • Завершение табуляции не работает в командной строке: вместо него вставляется символ ^I Это происходит, например, при попытке ввести правильное имя файла, передаваемое в качестве аргумента :tabedit .

  • q: дает ответа. :^F кажется, работает, но был несколько странным запускать первые пару раз - казалось, что он останавливался без активности HD или CPU в течение нескольких секунд, прежде чем появился. В то же время я смог переместить курсор - с j , k и т.д. - в область, где позднее появилось окно буфера командной строки.

    Обновление: при дальнейшей проверке кажется, что это только рисование окна командной строки, когда я пытаюсь переместить курсор за конец строки.

    ^C не работает, чтобы отменить из окна командной строки. Если я хочу выйти без выполнения команды, я должен нажать [ENTER] в пустой строке.

  • Команды командной строки, введенные в командной строке, т.е. не из окна буфера командной строки, не добавляются в историю командной строки.

  • команда :ls и другие команды, которые обычно отображают многострочный вывод, не отображают вывод. :echo "onefish" работает нормально, но результат команды не выводится :echo "onefish\ntwofish" .

  • как упоминалось выше, вывод команд оболочки не отображается. Команды оболочки, которые используют проклятия (например :!man ls) делай работу.

  • Регистры буфера обмена X @* и @+ недоступны: попытка, например, вставить через "+p выдает ошибку E353: Nothing in register + . Я бы ожидал, что эта конкретная проблема будет присутствовать, и подозреваю, что она может быть не связана с другими проблемами. В любом случае было бы здорово найти решение для этого.

Мой текущий обходной путь - сделать :mksession а затем выйти из vim и перезапустить его с этим сеансом. Это будет немного хлопотно, так как у меня работает около 10 экземпляров vim , многие с некоторыми полезными безымянными буферами, переменными vimscript и другими объектами, которые не сохраняются в сеансах.

Я попробовал предложение @ {griff steni.us}, но ни один :redraw! ни ^L I кажется, не имеет никакого полезного эффекта. ^L I Я заставил дисплей мигать.

1 ответ1

0

Я просто догадываюсь, но, возможно, экземпляр экрана был больше, чем размер вашего терминала сейчас, то есть не 80x24 символов.

В VIM вы можете сделать: перерисовать!

и на экране вы можете попробовать перерисовать ^ L

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .