Почему vim не работает правильно в сеансе telnet? - PullRequest
2 голосов
/ 31 октября 2008

Я использую vim (7.1) в OpenVMS V7.3-2.

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

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

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

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

Вставить, Удалить, Домой, Конец, PageUp и PageDown похожи на ~ в обычном режиме (с заглавных букв на строчные или наоборот)

Есть идеи?

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

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

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

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

Ответы [ 5 ]

1 голос
/ 02 ноября 2008

Я сталкивался с подобными проблемами при воскрешении старой пыльной коробки 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

Если вы хотите правильно настроить эту проклятую вещь, RTFMing может потребовать довольно много нервов и времени:

:h terminal-options
1 голос
/ 31 октября 2008

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

  • Вставка: я
  • Home: ^ переходит к первому непробельному символу, 0 всегда к первому столбцу
  • Конец: $
  • PageUp, PageDown: ctrl-u, ctrl-d перемещают половину страницы за раз
0 голосов
/ 01 мая 2012

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

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

Ctrl+[ Esc :q!
0 голосов
/ 31 октября 2008

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

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

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

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

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

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

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

$ SET TERMINAL / DEVICE = (ваше терминальное имя - например, vt100)

и затем убедитесь, что TERM на удаленном хосте Unix соответствует настройке системы VMS.

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

0 голосов
/ 31 октября 2008

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

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

...