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

moo*_*ick 292 scroll tmux

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

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

使用tmux1.8,Ubuntu 12.04 LTS,konsole或者gnome-terminal.

Chr*_*sen 386

历史记录限制是窗格属性,在创建窗格时固定的,无法更改现有窗格.该值取自history-limit会话选项(默认值为2000).

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

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

set-option -g history-limit 3000
Run Code Online (Sandbox Code Playgroud)

注意:小心设置一个非常大的默认值,如果你创建了许多窗格,它可以很容易地消耗大量的内存.

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

tmux set-option history-limit 5000 \; new-window
Run Code Online (Sandbox Code Playgroud)

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

tmux set-option -g history-limit 5000 \; new-session
Run Code Online (Sandbox Code Playgroud)

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

  • 如果"行"实际上只是其中的字符,那么我们可以假设128字节是内存中合理的行大小.如果我愿意提交32 MB来回滚一个窗格(适合我,我不使用很多窗格),那么我可以将历史限制增加到大约2**(25 - 7)= 256K `或25万行. (19认同)
  • 我最终选择了`set-option -g history-limit 50000` (8认同)
  • 您并不严格需要关闭所有 tmux 会话。您还可以在每个打开的会话中获取conf(使用前缀`:source ~/.tmux.conf`),这将使该会话中的新窗口/窗格遵循新配置。 (4认同)
  • 我的似乎只能达到 4700 左右……即使是新窗格。多路复用器 1.9 (3认同)
  • 我遇到了一个小问题。必须关闭所有 tmux 会话才能使此更改生效。来自 GNU screen 我假设每个新的 screen 会话都来自 ~/.tmux.conf ,但事实并非如此。只有当所有 tmux 会话都关闭并打开新会话时,对 ~/.tmux.conf 的更改才会生效。 (3认同)
  • 我不认为一行*只是*其中的字符。我目前有一个 tmux 窗口,有 100k 行,使用 160M 内存。 (3认同)
  • 对于那些不知道在哪里找到.tmux.conf文件的人,您只需在〜/ .tmux.conf中创建一个新文件,然后将这一行添加到文件set-option -g history-limit 50000中 (2认同)

f4d*_*4d0 15

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

vim ~/.tmux.conf
Run Code Online (Sandbox Code Playgroud)

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

set -g history-limit 5000
Run Code Online (Sandbox Code Playgroud)

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

  • 没有必要注销并重新登录。您只需完全退出 tmux 服务器,或者确保在每个会话中获取“~/.tmux.conf”(然后在这些会话中启动新窗口并关闭所有旧窗口) )。 (4认同)
  • 我偶然尝试了这个,但也许您与某人共享会话并且不希望其他人看到更长的历史记录,因此将其限制为 10 (2认同)

Dav*_*ido 10

这将把它固定在一个衬里中:

echo "set -g history-limit 5000" >> ~/.tmux.conf
Run Code Online (Sandbox Code Playgroud)

对于那些不知道在哪里找到.tmux.conf文件的人,您可以简单地在 处创建一个新文件,然后如果上述命令会抛出错误,~/.tmux.conf则将这一行添加到该文件中。set-option -g history-limit 50000(来自@C.Lee对此答案的评论)

  • `~/.tmux.conf` 中的任何内容似乎对我不起作用 (3认同)

小智 6

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

tmux set-option -g history-limit 100 \; new-session -s mysessionname \; set-option -g history-limit 2000
Run Code Online (Sandbox Code Playgroud)

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

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

#!/bin/bash
tmux set-option -g history-limit "${1}" \; new-session -s "${2}" \; set-option -g history-limit 2000
Run Code Online (Sandbox Code Playgroud)