前言:我当前的 tmux 配置在多个会话的多个窗口中有多个窗格。
不断出现的问题是,当我在一个窗口中工作时,我的所有历史记录都很好并且在该窗口的窗格之间分开,而当我交换窗口/会话时,该历史记录最初也是分开的,但直到我在一个窗口中输入一个命令不同的窗口/会话。
一旦发生这种情况,所有窗格的所有历史记录都会合并在一起,有时无法找到某个窗格的实际最后一个命令,这取决于我在该窗格上的时间。
有什么办法可以避免这种情况并使每个窗格都有自己的外壳历史记录吗?
如果您使用的是bashshell,您的命令历史记录将写入由HISTFILE变量定义的文件,默认为~/.bash_history. 在tmux窗格内,您可以访问如下所示的变量$TMUX_PANE:
$ echo $TMUX_PANE
%3
Run Code Online (Sandbox Code Playgroud)
您可以通过在~/.bashrc文件中添加以下内容来使用它来创建每个窗格的历史记录:
if [[ $TMUX_PANE ]]; then
HISTFILE=$HOME/.bash_history_tmux_${TMUX_PANE:1}
fi
Run Code Online (Sandbox Code Playgroud)
这将存储窗格 2 的历史记录,例如,在~/.bash_history_tmux_2.
这个想法的缺点是你最终会.bash_history_tmux_*在你的主目录中得到一堆文件。