2013-10-06 9 views
1

Я использую ConEmu и полностью удовлетворен этим, за исключением того факта, что, если я использую PuTTY для доступа к SSH, я могу запускать команды на удаленной машине, такие как vim или nano или mcedit или другие, которые открывает какой-то интерфейс curses, и я могу видеть историю консольных команд, но когда я использую клиент CygWin SSH или OpenSSH для Windows, я больше не вижу историю команд после запуска vim/nano/mcedit/whatever else.conemu + ssh очищает историю консоли

Когда я бросил эти программы (: WQ в Vim, Esc ключ в mcedit, Ctrl^X в нано) Я могу видеть все предыдущие команды выполняются, как это (если я использую PuTTY):

  1. Запуск PuTTY и подключиться к некоторому хосту
  2. Вы увидите что-то подобное в истории:
    хост $ Whoami
    пользователь
    хост $ ВИМ
    ... сделать что-то в Vim затем нажмите: WQ

И вы должны увидеть именно это:

=== Cut ===
хоста $ WHOAMI
пользователя
хоста $ VIM
хоста $
=== Cut ===

все предыдущие команды (whoami) видны. Однако, если я бегу ConEmu, а затем использовать клиент SSH из CygWin (или OpenSSH клиента, это не имеет значения) происходит следующее:

  1. Run ConEmu
  2. SSH пользователь @ somehost хост $ Whoami
    пользователь
    хост $ ВИМ
    ... сделать что-то в Vim затем нажмите: WQ

И теперь экран пуст! Нет истории! Вы просто видите это:

=== Cut ===
хост $
=== Cut ===

Как будто не было выполнено не Whoami. То же самое происходит для mcedit, nano или любых других программ, которые имеют что-то вроде «экрана». То же самое происходит и с Ctrl-O в Midnight Commander, в PuTTY все хорошо, но при использовании ssh из CygWin в ConEmu (или OpenSSH Windows client) и запуске Midnight Commander каждый Ctrl-O просто показывает пустую историю. Как будто ничего не было напечатано ранее. Это действительно не очень приятно.

Есть ли способ исправить это?

ответ

1

Стандартная переменная TERM среда для PuTTY.exe является xterm и что будет в основном работать на Cygwinssh.exe, а также. Тем не менее, лучшая переменная окружения TERM для ssh.exe равна cygwin.

При использовании Cygwinssh.exe для подключения к другой системе, Cygwin процессы ваши управляющие последовательности, не ConEmu. Фактически вы получаете то же поведение, независимо от того, используете ли вы ssh.exe внутри или вне ConEmu. Таким образом, проблема не имеет отношения к ConEmu вообще, по крайней мере, не к его процессору ANSI.

Решение должно использовать cygwin для переменной окружения TERM в удаленной системе. На самом деле клиент и сервер SSH сотрудничают, чтобы сделать это за вас автоматически. Но, возможно, вы случайно переопределили переменную TERM с указанием xterm в вашем .bash_profile или что-то еще. В этом случае escape-последовательность для восстановления экранного буфера после выхода из редактора будет неправильной для процессора Cygwin ANSI.

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

$ export TERM=xterm 
$ vim 
$ # the screen before is cleared 
$ export TERM=cygwin 
$ vim 
$ # the screen buffer is restored 
Смежные вопросы