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