在 tmux 中,当每次启动时,我们都需要执行很多快捷键,以初始化界面布局。这种事情通常发生在系统重启之后,我们需要启动新的 tmux 进程,并加载相关配置,然后输入快捷键完成窗口布局。那么有没有什么方法能够在 tmux 启动时,自动创建 Session Window Pane,并按照我们希望的样子呢?
好在有 Tmux Resurrect 插件,它能够持久化 tmux 当前状态,让我们在系统重启之后依旧能够恢复到之前的窗口布局。当安装该插件后,仅需在 tmux 中使用快捷键保存状态,然后下次启动后再使用快捷键恢复状态。
该笔记将记录:在 tmux 中,如何使用 Tmux Resurrect 插件来持久化窗口布局,以及相关问题处理。
1)我们使用 TPM 来安装 Tmux Resurrect 插件,参考 TPM 笔记;
2)更多操作,参考 tmux-resurrect/README.md at master 页面;
1)<prefix>, Ctrl+s:当保存成功之后,底部的状态行会提示 Tmux environment saved! 消息。
2)然后,退出 tmux 进程(采用任何方式,正常退出或 KILL -KILL 皆可)
3)最后,重新运行 tmux 命令,通过 <prefix>, Ctrl+r 按键恢复即可;
1)该插件默认仅保存窗口布局,如果希望保存环境变量、命令执行历史、恢复运行的程序等等,需要进一步修改 Tmux Resurrect 设置;
基于 Tmux Resurrect 插件,再通过 tmux-plugins/tmux-continuum 插件将自动保存窗口布局,并且还能实现在启动 tmux 时,自动恢复之前的窗口布局。
1)需要安装 TPM 插件(因为我们使用 TPM 来进行插件管理,所以需要使用该插件)
2)然后,添加如下配置:
set -g @plugin ‘tmux-plugins/tmux-resurrect‘ set -g @plugin ‘tmux-plugins/tmux-continuum‘ # 每分钟保存一次(这获取比较频繁) set -g @continuum-save-interval ‘1‘ # 当启动 tmux 进程时,自动恢复之前的布局 set -g @continuum-restore ‘on‘
3)<prefix>, Ctrl+I 来完成插件安装
我们需要根据目录结构来创建相应的窗口布局,因此使用脚本的方式来实现。
注意事项:该步骤是我们的特殊需求,与持久化窗口布局是无关的,仅是为了快速创建窗口布局。
tmux_start() { DEFAULT_SESSION="" for i in $(find /srv/http/ -maxdepth 1 -type d \( -name ‘PROJ*‘ -o -name ‘ORG*‘ \) -printf "%P\n" | sort --human-numeric-sort) do dirname="/srv/http/${i}" test -f "${dirname}/.tmuxignore" && continue tmux new-session -d -s "${i}" -c "${dirname}" # 使 pane 全部在该目录下 # 将首个目录作为默认 Session 以在最后 attach 该会话; test -z "${DEFAULT_SESSION}" && DEFAULT_SESSION="${i}" done tmux attach-session -t "${DEFAULT_SESSION}" }
每次创建 Pane 时,我们都希望它能直接进入工作目录,而不是默认目录(当前 $HOME 目录)。
我们的做法是:在创建 session 时,切换目录。比如,在 /tmp 中启动 tmux 时,当前 Session 中创建的 Pane 都将以 /tmp 目录开始。所以我们在脚本中使用 tmux new-session 而不是 tmux new-window 指令,虽然 tmux new-window -c 能够指定开始目录,但是这无法控制之后在 window 内创建的 Pane 都在特定目录中。
还有一种做法是,使用 bind 命令来指定:
unbind ‘"‘ bind ‘"‘ split-window -v -c ‘#{pane_current_path}‘ # Split panes vertically unbind % bind % split-window -h -c ‘#{pane_current_path}‘ # Split panes horizontal
How to Manage and Restore Tmux Sessions in Linux - Make Tech Easier
linux - How to change default new window directory from within the tmux - Unix & Linux Stack Exchange
Restore tmux session after reboot - Super User
Restoring tmux Sessions | Andrew Johnson
tmux-continuum/faq.md at master · tmux-plugins/tmux-continuum
tmux new pane has home directory as default instead of previous directory - Unix & Linux Stack Exchange
tmux-plugins/tmux-continuum: Continuous saving of tmux environment. Automatic restore when tmux is started. Automatic tmux start when computer is turned on.
tmux-plugins/tmux-resurrect: Persists tmux environment across system restarts.
unix - How to close a tmux session - Super User
「tmux」- 持久化窗口布局(在启动时,根据配置自动加载窗口布局) @20210507
原文:https://www.cnblogs.com/k4nz/p/14738594.html