我已经厌倦了尝试让 tmux scollback 与 iTerm2 和我选择的键盘映射一起工作。意识到我可以将缓冲区转储到文本文件中后,我发现这不再是必要的,甚至是特别可取的。目前我实现这个效果的绑定如下:
bind B capture-pane -S -999000 \; save-buffer ~/.tmux/buffers/filename
当然,这种安排会导致我filename
每次转储缓冲区时都会崩溃。更好的是缓冲区命名格式$PANE-NAME_YYYY-MM-DD_HH:MM:SS
(其中日期和时间是当前转储的日期和时间)。
我已经查看过tmux(1)
,虽然它记录了一些可用的变量,包括与客户端活动相关的时间,但我无法成功地将它们扩展到我的文件名中.tmux.conf
,而且我不认为这真的是我正在寻找的无论如何。
我相当确定我错过了一些明显的东西,但此时我已经花了很多时间寻找它,我不确定如果我能认出它做过看见。任何帮助将不胜感激。
答案1
您可以通过使用(别名为)指令和一些附加引用tmux
将它们作为 shell 命令运行来实现此目的:run-shell
run
bind B run "tmux capture-pane -S -999000; tmux save-buffer ~/.tmux/buffers/\"$(date +%d%m%y)\""
这会将您的缓冲区输出保存为~/.tmux/buffers/240115
.显然,您可以自定义date
命令来提供所需的粒度。
关于使用pane_title
: 如果您阅读了手册页的格式部分,它指出:
某些命令接受带有格式参数的 -F 标志。
不幸的是,save-buffer
这不是这些命令之一。
但是,您可以使用以下命令来绕过它list-panes
来检索当前窗口名称:
bind B run "tmux capture-pane -S -999000; tmux save-buffer ~/.tmux/buffers/\"$(tmux list-panes -F '#{window_name}')\"_\"$(date +%d%m%y)\""
例如,它将返回:~/.tmux/buffers/zsh_240115
。