Cygwin 防止清除回滚缓冲区

Cygwin 防止清除回滚缓冲区

在默认的 cmd.exe 窗口或类似的终端仿真器中运行 Cygwin 时,例如安慰我注意到,退出替换整个屏幕的程序(例如 Vim 和 man)后,只会显示当前窗口高度上的 bash 历史记录。也就是说,一旦向上滚动超过当前屏幕,就不会显示任何内容。无论屏幕缓冲区大小设置为多少,都会发生这种情况。

是否有可能保存更多的历史,没有切换到控制台以外的模拟器?

答案1

你可以尝试在screen会话。它使您可以向后滚动并在一个控制台中生成多个终端。看起来像它应该起作用在 Cygwin 中。

答案2

从这里的回应和缺乏回应来看Cygwin 邮件列表,我认为根本没办法做到这一点,至少在“它应该像在其他终端中一样工作”的方式下(除非有人证明我错了)。我采纳了 ak2 的建议,转而使用 mintty。它很好,而且我意识到我一次不需要很多 Cygwin 选项卡,因此我不需要控制台的选项卡功能。

答案3

对我而言,以及我住在壳牌的情况是:

我在 Cygwin 中使用 mrxvt 和 Xming 服务器,因为它具有(众多出色功能之一)鼠标可滚动缓冲区,您可以为其设置特定行数。您将获得一个带有选项卡的全尺寸窗口屏幕,并且可以在 ~/.mrxvtrc 配置文件中配置:启动时的选项卡数量、字体大小/类型、fg/bg 颜色等。我使用 rxvt 作为替代方案,因为它不需要 X 服务器(Xming)。

我从 sourceforge 获取了 mrxvt,并使用命令 {configure、make、make install} 对其进行了编译。我相信可以使用 Cygwin 安装程序/软件更新程序来获取 rxvt。

键入 configure(始终检查 configure 的结果以确保一切正常),然后键入 make,检查是否有任何编译器错误(警告也可以),如果正确则键入 make install 将 mrxvt 安装到 /usr/local/bin。

编译需要一点时间,但非常值得。

请查看此 mrxvt 配置文件作为示例: http://dotfiles.org/~sleepyEDB/.mrxvtrc

从这里获取 Xming (已编译): http://www.straightrunning.com/XmingNotes/

我创建了一个 dos 批处理文件,单击鼠标即可启动 Xming 和 rxvt,然后从 rxvt 启动 mrxvt。可能还有其他启动方法,但对我来说这种方法可行,因为 mrxvt 和 rxvt 不是 Windows 命令 shell 的子进程。

dos批处理文件内容:start C:\cygwin\bin\rxvt.exe -sb -sl 3000 -fg gray -bg black -fn "Courier New-14" -km noenc -e /bin/bash --login -i

您可以使用屏幕,但滚动只能通过组合键进行,而不能像 mrxvt 那样使用鼠标。屏幕滚动模式:Ca [ 向上/向下翻页:Cf Cb 向上/向下翻半页:Cu Cd 如果您在滚动模式之外使用 Ca d,则(要重新连接屏幕)键入:screen -R

您需要在 /etc/screenrc 中创建条目来设置回滚行。并设置 bash 别名 screen='screen -c /etc/screenrc'

相关内容