【问题标题】:How to increase scrollback buffer size in tmux?如何在 tmux 中增加回滚缓冲区的大小?
【发布时间】:2013-09-16 14:30:41
【问题描述】:

如何增加tmux 中的回滚缓冲区大小?

如果我进入复制模式,可用的回滚行数(在右上角可见)总是低于 2000。我试图找到所有 tmux 命令的列表,但我找不到任何关于回滚大小的信息。对于所有我看到的设置该选项的screen command 不适用于tmux

使用tmux 1.8、Ubuntu 12.04 LTS、konsolegnome-terminal

【问题讨论】:

    标签: scroll tmux


    【解决方案1】:

    历史记录限制是一个窗格属性,在创建窗格时已修复,不能针对现有窗格进行更改。该值取自 history-limit 会话选项(默认值为 2000)。

    要创建具有不同值的窗格,您需要在创建窗格之前设置适当的history-limit 选项。

    要建立不同的默认值,您可以在 .tmux.conf 文件中添加如下一行:

    set-option -g history-limit 3000
    

    注意:请小心设置一个非常大的默认值,如果您创建许多窗格,它很容易消耗大量 RAM。

    对于现有会话中的新窗格(或新窗口中的初始窗格),您可以设置该会话的 history-limit。您可能会使用这样的命令(来自 shell):

    tmux set-option history-limit 5000 \; new-window
    

    对于(初始窗口的初始窗格)新会话,您需要在创建会话之前设置“全局”history-limit

    tmux set-option -g history-limit 5000 \; new-session
    

    注意:如果您不重新设置history-limit 值,那么新值也将用于将来创建的其他窗格/窗口/会话;目前没有直接的方法来创建具有自己特定限制的单个新窗格/窗口/会话而不(至少暂时)更改history-limit(尽管show-option(尤其是在 1.7 和更高版本中)可以帮助检索当前值以便您稍后恢复它)。

    【讨论】:

    • 如果“行”真的只是其中的字符,那么我们可以假设 128 字节是内存中合理的行大小。如果我愿意承诺 32 MB 来回滚单个窗格(这适合我,我不使用很多窗格),那么我可以将我的历史记录限制增加到大约 2 ** (25 - 7) = 256K 或 25 万行。
    • 我最终选择了set-option -g history-limit 50000
    • 我的似乎只上升到 4700 左右.. 即使是一个新的窗格。 tmux 1.9
    • 对于那些不知道在哪里找到 .tmux.conf 文件的人,您可以简单地在 ~/.tmux.conf 中创建一个新文件,然后将这一行添加到文件集中-option -g history-limit 50000
    • 您不需要关闭所有 tmux 会话。您还可以在每个打开的会话中获取 conf(使用前缀 :source ~/.tmux.conf),这将使该会话中的新窗口/窗格遵循新配置。
    【解决方案2】:

    使用以下命令打开 tmux 配置文件:

    vim ~/.tmux.conf
    

    在配置文件中添加以下行:

    set -g history-limit 5000
    

    注销并重新登录,启动一个新的 tmux 窗口,现在你的限制是 5000。

    【讨论】:

    • 没有必要注销和登录。您只需完全退出 tmux 服务器,或者确保在每个会话中获取~/.tmux.conf(然后在这些会话中启动新窗口并关闭任何旧窗户)。
    • 这不适用于像 50 这样较小的限制,但它适用于 5000。使用 seq 1 5100 测试并使用 ^B+PgUp 向后滚动
    • @rubo77 这是一个很好的观点,我不知道。我没有测试它,因为问题是增加缓冲区,而不是减少。请允许我问你,为什么要减少缓冲区?从我的脑海中,我可以想到优化和内存限制?
    • 我偶然尝试了这个,但也许您与某人共享会话并且不希望其他人看到更长的历史记录,将其限制为 10
    【解决方案3】:

    这建立在 ntc2 和 Chris Johnsen 的回答之上。每当我想创建一个具有自定义历史限制的新会话时,我都会使用它。我想要一种方法来创建具有有限回滚的会话,而不会永久更改未来会话的历史限制。

    tmux set-option -g history-limit 100 \; new-session -s mysessionname \; set-option -g history-limit 2000
    

    无论是否存在现有会话,这都有效。在为新会话设置历史限制后,它会将其重置为默认值,对我来说是 2000。

    我创建了一个可执行的 bash 脚本,使它更有用一点。传递给脚本的第一个参数设置新会话的历史限制,第二个参数设置其会话名称:

    #!/bin/bash
    tmux set-option -g history-limit "${1}" \; new-session -s "${2}" \; set-option -g history-limit 2000
    

    【讨论】:

      【解决方案4】:

      这将在一个班轮中修复它:

      echo "set -g history-limit 5000" >> ~/.tmux.conf
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多