经常需要在服务器端安装或者复制一些东西,等待时间较长的情况下如果突然遇到断开连接造成任务终端,既糟心又浪费时间,之前尝试用screen开启保留窗口解决,但体验实在不敢恭维以至于很多时候忘记用,下面推荐一款既能保留会话内容又方便好看的工具–tmux
在Linux中安装:
sudo apt-get install tmux
使用(打开上次的会话):
tmux a
// view previous stdout
Ctrl-b then [ to enter copy mode, use Down/Up arrows or PageDown and PageUp keys, q or Enter to exit copy mode.
编辑~/.tmux.conf, 配置一个beatiful的云终端
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# 设置前缀键,默认为Ctrl+n
set -g prefix C-n
# 释放之前的Ctrl-b前缀快捷键
unbind C-b
#jtmux有一个延时以方便用户按键组合,默认有点长。这里设置为1秒钟
set -s escape-time 1
# 设置动态加载tmux配置文件的快捷键
bind r source-file ~/.tmux.conf \; display "Configuration Reloaded"
# 设置窗口标签的前景及背景色
# setw -g window-status-fg colour72
# setw -g window-status-bg colour238
# junegunn
set-window-option -g window-status-format '#[bg=colour238]#[fg=colour107] #I #[bg=colour239]#[fg=colour110] #[bg=colour240]#W#[bg=colour239]#[fg=colour195]#F#[bg=colour238] '
set-window-option -g window-status-current-format '#[bg=colour236]#[fg=colour215,bold] #I:#[bg=colour235]#[fg=colour167] #[bg=colour234]#W#[bg=colour235]#[fg=colour195]#F#[bg=colour236] '
setw -g window-status-attr dim
# 设置当前窗口标签的前景及背景色,所谓当前窗口标签会显示在状态栏中间
# setw -g window-status-current-fg colour22
# setw -g window-status-current-bg colour73
# setw -g window-status-current-attr bright
# 设置窗口分割的边框颜色
# set -g pane-border-fg yellow
set -g pane-border-fg colour237
# set -g pane-border-bg black
# 设置当前窗口分割的边框颜色
# set -g pane-active-border-fg green
set -g pane-active-border-fg colour240
# set -g pane-active-border-bg yellow
# 设置提示信息的前景及背景色, e.g, Reload
set -g message-fg colour168
set -g message-bg colour237
set -g message-attr bright
#set -g set-titles-string '#T'
################### 状态栏设置 ###############################
# 以下色彩为mac环境下,Linux下可能需重新设置颜色
# 设置状态栏前景色,背景色
#set -g status-fg white
#set -g status-bg black
# 设置状态栏前景及背景色
set -g status-bg colour237
set -g status-fg colour68
# 设置状态栏左部宽度 默认为10
set -g status-left-length 45
# 设置状态栏左部显示内容。
# https://gitlab.com/gnachman/iterm2/issues/6666
# set -g status-left "#[fg=colour252,bold,bg=colour243] 🌺 S: #S #[fg=colour250,bg=colour239] 🏵 W: #I #[fg=yellow,bg=colour237] ☘ #[fg=colour250,bg=colour237] P: #P#[default]"
# set-option -g status-left '#[bg=colour72] #[bg=colour234] #[bg=colour235] #[bg=colour236]#[fg=colour185,bg=colour238] 🌺 S:#S #[fg=colour251,bg=colour239] 💻 #h '
# set-option -g status-left '#[bg=colour72] #[bg=colour236] #[bg=colour237]#[fg=colour185,bg=colour238] 🌺 S:#S #[fg=colour251,bg=colour239] 💻 #h '
set-option -g status-left '#[bg=colour72] #[bg=colour236] #[bg=colour237]#[fg=colour185,bg=colour238] S:#S #[fg=colour251,bg=colour239] h:#h '
# 设置状态栏右部宽度
set -g status-right-length 48
# 设置状态栏右部内容,这里设置为时间信息
# macOS
# set -g status-right "#[fg=colour251,bg=colour239] 🗓 %b-%d #[fg=colour251,bg=colour238] ⏱ %R #[fg=colour251,bg=colour237] 🐳 #(ifconfig | grep 'inet.*netmask.*broadcast' | awk '{print $2}') #[bg=colour236] #[bg=colour235] #[bg=colour72] "
set -g status-right "#[fg=colour251,bg=colour239]%b-%d #[fg=colour251,bg=colour238] %R #[fg=colour251,bg=colour237] #(ifconfig | grep 'inet.*netmask.*broadcast' | awk '{print $2}') #[bg=colour236] #[bg=colour235] #[bg=colour72] "
set -g status-right "#[fg=colour251,bg=colour239]%b-%d #[fg=colour251,bg=colour238] %R #[fg=colour251,bg=colour237] #(ifconfig | grep 'inet.*netmask.*broadcast' | awk '{print $2}') #[bg=colour236] #[bg=colour235] #[bg=colour72] "
set-option -g status-left "#[fg=colour248, bg=colour241] S:#S #[fg=colour241, bg=colour237, nobold, noitalics, nounderscore]"
set-option -g status-right "#[fg=colour239, bg=colour237, nobold, nounderscore, noitalics]#[fg=colour246,bg=colour239] %Y-%m-%d %H:%M #[fg=colour248, bg=colour239, nobold, noitalics, nounderscore]#[fg=colour237, bg=colour248] #(ifconfig | grep 'inet.*netmask.*broadcast' | awk '{print $2}') "
# Ubuntu
# set -g status-right "#[fg=colour251,bg=colour239] 🗓 %b-%d #[fg=colour251,bg=colour238] ⏱ %R #[fg=colour251,bg=colour237] 🐳 #(ifconfig | grep 'inet addr:192' | cut -d: -f2 | awk '{print $1}') #[bg=colour236] #[bg=colour72] "
# 窗口信息居中显示
set -g status-justify centre
# 设置状态栏更新时间 每60秒更新一次,默认是15秒更新
set -g status-interval 60
# https://github.com/neovim/neovim/wiki/FAQ#cursor-shape-doesnt-change-in-tmux
set -g -a terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
# Move status bar to the top
# set-option -g status-position top
set-option -g status-position bottom
set-option -g status on
set-option -g status-interval 2
set-option -g status-justify "centre"
set-option -g status-left-length 60
set-option -g status-right-length 90
set-option -g status-left "#(~/tmux-powerline/powerline.sh left)"
set-option -g status-right "#(~/tmux-powerline/powerline.sh right)"
set-window-option -g window-status-current-format "#[fg=colour235, bg=colour27]⮀#[fg=colour255, bg=colour27] #I ⮁ #W #[fg=colour27, bg=colour235]⮀"
bind C-[ run '~/tmux-powerline/mute_powerline.sh left' # Mute left statusbar.
bind C-] run '~/tmux-powerline/mute_powerline.sh right' # Mute right statusbar.
ps:在iPad pro下载blink使用,体验相当好。
常用快捷键:
- 前缀键:默认为Ctrl+b, 上述配置已改为Ctrl+n
表一:系统指令。
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+n |
? |
显示快捷键帮助文档 |
Ctrl+n |
d |
断开当前会话 |
Ctrl+n |
D |
选择要断开的会话 |
Ctrl+n |
Ctrl+z |
挂起当前会话 |
Ctrl+n |
r |
强制重载当前会话 |
Ctrl+n |
s |
显示会话列表用于选择并切换 |
Ctrl+n |
: |
进入命令行模式,此时可直接输入ls 等命令 |
Ctrl+n |
[ |
进入复制模式,按q 退出 |
Ctrl+n |
] |
粘贴复制模式中复制的文本 |
Ctrl+n |
~ |
列出提示信息缓存 |
表二:窗口(window)指令。
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+n |
c |
新建窗口 |
Ctrl+n |
& |
关闭当前窗口(关闭前需输入y or n 确认) |
Ctrl+n |
0~9 |
切换到指定窗口 |
Ctrl+n |
p |
切换到上一窗口 |
Ctrl+n |
n |
切换到下一窗口 |
Ctrl+n |
w |
打开窗口列表,用于且切换窗口 |
Ctrl+n |
, |
重命名当前窗口 |
Ctrl+n |
. |
修改当前窗口编号(适用于窗口重新排序) |
Ctrl+n |
f |
快速定位到窗口(输入关键字匹配窗口名称) |
表三:面板(pane)指令。
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+n |
" |
当前面板上下一分为二,下侧新建面板 |
Ctrl+n |
% |
当前面板左右一分为二,右侧新建面板 |
Ctrl+n |
x |
关闭当前面板(关闭前需输入y or n 确认) |
Ctrl+n |
z |
最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增) |
Ctrl+n |
! |
将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效) |
Ctrl+n |
; |
切换到最后一次使用的面板 |
Ctrl+n |
q |
显示面板编号,在编号消失前输入对应的数字可切换到相应的面板 |
Ctrl+n |
{ |
向前置换当前面板 |
Ctrl+n |
} |
向后置换当前面板 |
Ctrl+n |
Ctrl+o |
顺时针旋转当前窗口中的所有面板 |
Ctrl+n |
方向键 |
移动光标切换面板 |
Ctrl+n |
o |
选择下一面板 |
Ctrl+n |
空格键 |
在自带的面板布局中循环切换 |
Ctrl+n |
Alt+方向键 |
以5个单元格为单位调整当前面板边缘 |
Ctrl+n |
Ctrl+方向键 |
以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖) |
Ctrl+n |
t |
显示时钟 |