将当前窗格升级为一个独立的窗口,使用快捷键 PREFIX !
,此后,当前会话中会多出一个窗口。shell
在命令模式下使用 join-pane
命令,该命令的格式为:vim
join-pane -s [souce-window-no] -t [target-window-no]
-s
和 -t
两个参数均可以忽略,表示为当前的窗口或窗格。bash
将当前窗格放大,放在一个独立的窗口中显示,查看完以后再还原。服务器
实现此功能,先将当前的窗格经过 break-pane
命令分离出来,再将它放到一个临时的窗口中显示。将该操做绑定到方向键上:session
unbind Up bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
它使用 swap-pane
命令实现窗格的互换。 同理,要将窗口从当前的临时窗口还原到的原来窗口,仍是使用 swap-pane
命令,并绑定到方向键:ssh
unbind Down bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
因为它是使用 last-window
来查找原来的窗口,所以有必定的缺陷,咱们在放大查看后,不可切换到其它窗口,只能当即还原回来。操作系统
能够指定 tmux 在建立会话中的第一个窗口时启动什么命令,命令写在建立会话的最后,如:命令行
$ tmux new-session -s servers -d "ssh deploy@burns"
也能够在建立窗格时指定启动什么命令,如:日志
$ tmux split-window -v "ssh dba@smithers"
可是这两种方式指定的自动启动命令,当命令结果或退出后,其关联的窗口或窗格也会自动关闭。code
一台机器上的全部会话都由同一个 tmux 服务器管理。而每一个开启会话的终端只是一个 tmux 客户端。咱们使用 switch-client
命令在各会话间进行切换。或者使用快捷键 PREFIX (
和 PREFIX )
在各会话间进行切换关联。也能够用 PREFIX s
列出全部的会话,供咱们选择后切换。
可使用 has-session
命令进行判断,只有当会话不存在时才建立会话:
if ! tmux has-session -t remote; then exec tmux new-session -s development -d # other setup commands before attaching ... fi exec tmux attach -t development
能够将一个会话中的窗口移到到另外一个会话中。使用 move-window
命令,该命令绑定到快捷键 PREFIX .
,能够按下该快捷键,选择要移动的窗口,而后输入目标会话名。例如:
先建立两个会话:
$ tmux new -s editor -d vim $ tmux new -s processes -d top
关联到 processes 会话,在其中按下 PREFIX .
,而后在命令行中输入 editor,此时会将 processes 会话中的惟一窗口移到 editor 会话中,这些意味着 processes 会话将会关闭。移动窗口对应的命令以下:
$ tmux move-window -s processes:1 -t editor
使 tmux 与操做系统紧密集成。
默认使用的是 bash, 若是要改为 zsh,能够在 .tmux.conf 中配置:
set -g default-command /bin/zsh set -g default-shell /bin/zsh
能够在 Linux 上的 .bashrc 或者 OS X 上的 .bash_profile 上进行配置,并将会话设置为用户名:
if [[ "$TERM" != "screen-256color" ]] then tmux attach-session -t "$USER" || tmux new-session -s "$USER" exit fi
使用 pipe-pane
命令将窗格的输出保存到一个文件中,在命令模式下开启该功能:
pipe-pane -o "mylog.txt"
当使用相同的参数从新执行时,输出保存到日志的功能会被关闭,即该功能像一个开关。
能够将它绑定到一个快捷键:
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
参考资源: