Почему vim неправильно работает в сеансе telnet?

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

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

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

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

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

Insert, Delete, Home, End, PageUp и PageDown похожи на ~ в обычном режиме (с верхнего регистра на нижний или наоборот).

Есть идеи ?

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

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

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

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


person Luc M    schedule 31.10.2008    source источник
comment
Вы сказали Но когда я запускаю сеанс telnet из сеанса VMS, некоторые клавиши не работают должным образом. Означает ли это: вы запустили SmartTerm в Windows, подключились к VMS, а затем подключились через telnet в другом месте и запустили vim? Telnetted к какой системе?   -  person Joshua Swink    schedule 01.11.2008


Ответы (5)


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

  • Вставка: я
  • Home: ^ идет к первому непробельному символу, 0 всегда идет к первому столбцу
  • Конец: $
  • PageUp, PageDown: ctrl-u, ctrl-d перемещение на полстраницы за раз
person Lucas Oman    schedule 31.10.2008
comment
Согласитесь :-) Но вредные привычки трудно забыть. Спасибо - person Luc M; 31.10.2008
comment
^ и $ не работают в режиме вставки... но Home и End работают. Нажимать esc,$,i в три раза труднее, чем просто нажимать End. То же самое для клавиш со стрелками, нельзя использовать hjkl в режиме вставки. - person davr; 31.10.2008
comment
Это не проблема для большинства пользователей, потому что вы должны изменить свои привычки, чтобы единственное, что вы когда-либо делали в режиме вставки, на самом деле, знаете, вставляли. - person ephemient; 31.10.2008
comment
ctrl-f/ctrl-b перемещать полные страницы за раз. На самом деле Ctrl-u/d может делать разные вещи, в зависимости от настройки «прокрутки» (по умолчанию 1/2 страницы). О, и считайте это отличным поводом избавиться от вредных привычек. - person Zathrus; 06.11.2008

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

: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
person ngn    schedule 02.11.2008

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

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

person Nic Wise    schedule 31.10.2008

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

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

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

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

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

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

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

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

а затем убедитесь, что TERM на удаленном хосте unix соответствует тому, что установлено в системе VMS.

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

person feoh    schedule 31.10.2008
comment
Я подключаюсь к Alpha с помощью SmarTerm, приложения для Windows. Юникса здесь нет. Нет никакой разницы между сеансом telnet и обычным сеансом, когда я набираю SHOW TERMINAL, за исключением информации об удаленном порте: хост и владелец. Один удаленный - это мой компьютер, а другой - Alpha. - person Luc M; 31.10.2008
comment
Там все еще задействована эмуляция терминала. Я понятия не имею, какую эмуляцию использует SmarTerm или какой терминал, по мнению второго блока VMS, у вас есть, но они явно не согласны. - person Zathrus; 06.11.2008
comment
выполните SET TERM/INQUIRE, и хост спросит эмулятор терминала, что это такое, и установит терминал на этот тип. В этот момент SHOW TERM расскажет вам, что утверждает эмулятор терминала. - person EvilTeach; 07.12.2008

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

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

Ctrl+[ Esc :q!
person Yauhen Yakimovich    schedule 01.05.2012