conemu + ssh清除控制台历史记录

时间:2013-10-06 10:11:57

标签: ssh conemu

我正在使用ConEmu并且对它完全满意,除非我使用PuTTY进行SSH访问,然后我可以在远程机器上运行命令,如vim或nano或mcedit或其他打开某种诅咒的命令-interface我可以看到控制台命令的历史记录,但是当我使用CygWin SSH客户端或OpenSSH for Windows时,我无法在运行vim / nano / mcedit /其他任何内容后看到命令历史记录。

当我退出这些程序时(:vim中的wq,mced中的Esc键,nano中的Ctrl ^ X)我可以看到所有以前执行的命令,如下所示(如果我使用PuTTY):

  1. 运行PuTTY并连接到某个主机
  2. 你会在历史中看到类似的东西:
    主持人$ whoami
    用户
    主持人$ vim
    ...在vim中执行某些操作然后按:wq
  3. 你应该看到这个:

    ===削减===
    主持人$ whoami
    用户
    主持人$ vim
    主持人$
    ===削减===

    所有以前的命令(whoami)都是可见的。但是,如果我运行ConEmu然后使用来自CygWin(或OpenSSH客户端,无关紧要)的SSH客户端,则会发生以下情况:

    1. 运行ConEmu
    2. ssh user @ somehost 主持人$ whoami
      用户
      主持人$ vim
      ...在vim中执行某些操作然后按:wq
    3. 现在屏幕是空的!没有历史!你只看到这个:

      ===削减===
      主持人$
      ===削减===

      好像没有执行过whoami。同样适用于mcedit,nano或任何其他类似“屏幕”的程序。 Midnight Commander中的Ctrl-O也是如此,在PuTTY中一切都很好,但是当在ConEmu(或OpenSSH Windows客户端)中使用CygWin的ssh并运行Midnight Commander时,每个Ctrl-O只显示一个空的历史记录。好像之前没有输入任何内容。这真的不太好。

      有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

TERM的标准PuTTY.exe环境变量为xterm,并且主要适用于 Cygwin ssh.exe。但是,TERM更好的ssh.exe环境变量为cygwin

当您使用 Cygwin ssh.exe连接到另一个系统时, Cygwin 会处理您的转义序列,而不是 ConEmu 。事实上,无论您是在 ConEmu 内部还是外部运行ssh.exe,您都会遇到相同的行为。所以这个问题与 ConEmu 根本没有关系,至少不是它的ANSI处理器。

解决方案是使用cygwin作为远程系统上的TERM环境变量。实际上, SSH 客户端和服务器会自动配合为您执行此操作。但也许您在TERM或其他任何情况下意外地覆盖了提供的xterm变量,并说.bash_profile。在这种情况下,退出编辑器后恢复屏幕缓冲区的转义序列对于 Cygwin ANSI处理器将不正确。

您可以执行此测试以检查这是否可以解决您的问题:

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