Я много пользуюсь 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 Я заставил дисплей мигать.
