在 tmux 中动态命名缓冲区导出

在 tmux 中动态命名缓冲区导出

我已经厌倦了尝试让 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-shellrun

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

相关内容