tmux-resurrect 没有恢复我正在运行的命令

tmux-resurrect 没有恢复我正在运行的命令

我正在使用tmux 复活用于在 tmux 关闭后重新创建 tmux 会话的插件。它大部分工作,但它不恢复正在运行的命令。我尝试过使用vimlessmantail,全部受支持,但除了等待的 bash 提示之外什么也没有得到。

以下是正在运行的一个窗格的保存数据,vim test.txt如以下中的保存文件之一所示 ~/.tmux/resurrect

pane 0 1 :bash 1 :* 2 :/tmp 0 vim :

显然这里缺少一些东西。 “test.txt”在哪里?如果参数不持久,则很难重新创建命令。

为什么不保存完整命令?

我正在 Cygwin 上运行它,我怀疑这是相关的。

答案1

新版本确实对此有所帮助:

https://github.com/tmux-plugins/tmux-resurrect/blob/master/docs/restoring_programs.md

我必须将以下内容添加到我的中.tmux.conf以使其更好地工作:

# Plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# Plugin Config
set -g @resurrect-processes 'python sqlite3 nano'
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-boot 'on'
set -g @continuum-restore 'on'

获取插件+ (大写一)

更新插件+U (大写U)

保存:+Ctrl+S

恢复:+Ctrl + R

可以在 .tmux/resurrect 编辑生成的带日期的保存文件

last是指向最后一个文件的符号链接,如果 tmux 在启动时崩溃,则只是cp最后一个指向的最新文件的工作/旧文件。

部分用户find 在 .tmux.conf 开头临时添加 new-session 会清除所有内容。

来源:https://jdhao.github.io/2019/01/17/tmux_plugin_management

答案2

问题的根源在于psCygwin 提供的版本不完善,因为用他们的话说, 由于在 Windows 下模拟 POSIX 环境的限制,可以提供的信息很少。特别是此版本ps不会显示命令参数。解决方案是安装一个更有用的替代品ps 并将其集成到 tmux-resurrect 中。

从安装开始pgrep。这可以在 Cygwin 包中找到 psutils-ng(对于 64 位 Cygwin。对于 32 位,它可能仍然被称为psutils。)

现在我们需要告诉tmux-resurrect使用它。幸运的是它已经有一个 战略可以使用这个工具。但是,它与 Cygwin 版本不太兼容,因此编辑文件 [tmux-resurrect-install-dir]/save_command_strategies/pgrep.sh并更改

\pgrep -lf -P "$PANE_PID" |

\pgrep -af -P "$PANE_PID" |

这是一个字母的变化,l变为a

.tmux.conf最后,在任何其他复活配置之后添加此行到您的文件中,告诉插件使用此策略 :

set -g @resurrect-save-command-strategy 'pgrep'

应该可以做到这一点。下次保存会话时,上面给出的示例应该看起来更像这样:

pane 0 1 :bash 1 :* 2 :/tmp 0 vim :vim test.txt

恢复后该文件将被加载到vim.

相关内容