2013-10-06 142 views
1

我使用ConEmu和我完全滿意了,除了一個事實,即如果我用膩子SSH訪問,我可以運行像vim或者nano或mcedit或其他遠程計算機上的命令,其中打開某種詛咒接口的,我可以看到控制檯命令歷史,但是當我使用Cygwin SSH客戶端或OpenSSH的windows版本,我不能看到的命令歷史運行的vim /納米/ mcedit /任何其他人後了。conemu + SSH清除控制檯歷史

當我退出這些程序(:WQ Vim在mcedit Esc鍵,Ctrl鍵^ X納米),我可以看到所有的以前的命令執行,像這樣(如果使用膩子):

  1. 運行膩子連接到某些主機
  2. 你會看到在歷史上類似的東西:
    主機$ WHOAMI
    用戶
    主機$ VIM
    ...做一些VIM然後按:WQ

,你應該看到正是這一點:

===切===
主機$ WHOAMI
用戶
主機$ VIM
主機$
===切===

所有以前的命令(WHOAMI)是可見的。但是,如果我跑ConEmu然後用SSH客戶端cygwin的版本(或OpenSSH客戶端,它並不重要)會發生以下情況:

  1. 運行ConEmu
  2. SSH用戶@,某 主機$ WHOAMI
    用戶
    主機$ VIM
    ...做一些VIM然後按:WQ

而且現在的屏幕是空的!沒有歷史!你剛纔看到:

===切===
主機$
===切===

彷彿沒有WHOAMI被執行。對於mcedit,nano或其他任何類似「屏幕」的程序也是如此。同時也會有相同按Ctrl-O在午夜指揮官,在膩子一切都很好,但是當使用cygwin的版本在ConEmu(或OpenSSH的Windows客戶端),SSH和運行午夜指揮官每個Ctrl-O鍵只顯示一個空的歷史。就好像之前沒有輸入任何內容。這真的不好。

有沒有辦法解決呢?

回答

1

PuTTY.exe標準TERM環境變量是xterm,這將主要用於Cygwin的ssh.exe正常工作。但是,對於ssh.exe,更好的TERM環境變量是cygwin

當您使用Cygwin的ssh.exe連接到另一個系統,Cygwin的過程的轉義序列,不ConEmu。事實上,無論您是在ConEmu之內還是之外運行ssh.exe,您都會得到相同的行爲。所以這個問題根本不涉及到ConEmu,至少不是它的ANSI處理器。

解決方法是在遠程系統上爲TERM環境變量使用cygwin。實際上,客戶端和服務器協作爲您自動完成此操作。但也許你不小心覆蓋了提供的TERM變量,在你的.bash_profile或其他任何地方有xterm。在這種情況下,退出編輯器後恢復屏幕緩衝區的轉義序列對於處理器而言將不正確。

你可以做這個測試,以檢查這是否解決您的問題:

$ export TERM=xterm 
$ vim 
$ # the screen before is cleared 
$ export TERM=cygwin 
$ vim 
$ # the screen buffer is restored