Почему vim некорректно работает в сеансе telnet?
-
05-07-2019 - |
Вопрос
Я использую 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!