Вопрос

Я использую vim (7.1) в OpenVMS версии 7.3-2.

Я подключаюсь к виртуальным машинам через сеанс telnet с помощью SmartTerm, эмулятора терминала.

Это работает нормально.

Но когда я запускаю сеанс telnet из сеанса виртуальной машины (подключенной через SmartTerm) к другому сеансу виртуальной машины, некоторые клавиши не работают должным образом.

|--------------| telnet   |-------------| telnet   |-----------------|
|  Smartterm   | ------>  | VMS, Vim OK | ------>  | VMS, Vim broken |
|--------------|          |-------------|          |-----------------|

Вставка, Удаление, Home, End, PageUp и PageDown выполняются как ~ в обычном режиме ( из верхнего в нижний регистр или наоборот)

Есть какие - нибудь идеи ?

=============================================

Редактировать

Я только что понял, что не упомянул, что второй сеанс telneted находится на том же самом виртуальном сервере.

Я делаю это, потому что мне нужно что-то сделать с правами другого пользователя.

Это было полезно?

Решение

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

  • Вставить:i
  • Главная:^ переходит к первому символу без пробелов, 0 всегда переходит к первому столбцу
  • Конец:$
  • Страница вверх, страница Вниз:ctrl-u, ctrl-d перемещать по полстраницы за раз

Другие советы

Я столкнулся с подобными проблемами при восстановлении старой пыльной коробки Solaris.Я был слишком ленив, чтобы искать, как я должен установить свой t_...переменные корректно, поэтому вместо этого я переназначил неисправные escape-последовательности терминала:

:map xxx 0          (press <C-v><Home> in place of xxx)
:map xxx <C-b>      (press <C-v><PgUp> in place of xxx)
... etc

Если вы хотите настроить эту чертову штуку правильно, обработка RTF-файлов может отнять немало нервов и времени:

:h terminal-options

Обычно это происходит из-за эмуляции терминала - значит, что-то не передает нужные ключи.Прошла целая вечность с тех пор, как я делал это, но поищите что-нибудь вроде VT-100 и тому подобное.Я тоже сомневаюсь, что это относится конкретно к vim :)

Извини, я больше ничем не могу тебе помочь.

Первый вопрос, который нужно задать, это просто:Перед чем ты сидишь?Вы действительно находитесь на консоли VAX или Alpha, работающей под управлением OpenVMS?Я предполагаю, что ответ будет отрицательным.

В маловероятном случае, если ответ будет утвердительным, просто введите:

$ ПОКАЗАТЬ ТЕРМИНАЛ

и убедитесь, что переменная TERM на удаленном хосте UNIX точно соответствует этому значению.

Если мое предположение верно, и вы сидите перед ПК или Mac, на котором запущен какой-нибудь эмулятор терминала, например PuTTY или Terminal, то вам необходимо изучить возможности вашего программного обеспечения, чтобы убедиться, что эмулируемый им терминал правильно отражен как в представлении о мире виртуальной машины, так и на удаленном хосте UNIX.

Как только вы выясните, какой тип терминала вы эмулируете, используйте приведенную выше команду VMS еще раз в виртуальной системе, к которой вы подключены, чтобы убедиться в совпадении.

Если нет, просто исправьте ситуацию, набрав:

$ УСТАНОВИТЬ ТЕРМИНАЛ / УСТРОЙСТВО=(ваше терминальное имя - напримерvt100)

а затем убедитесь, что этот ТЕРМИН на удаленном хосте unix соответствует тому, на что настроена система виртуальных машин.

Как только вы все это сделаете, все должно работать нормально.

В дополнение к тому, как установить env переменные, касающиеся совместимости терминальных устройств, может быть полезен совет по самому клиенту telnet:

Перед обычной комбинацией Esc используйте Ctrl + [, напримерчтобы выйти из vim

Ctrl+[ Esc :q!
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top