您的位置:首页 > 其它

tmux使用及个性化配置

2016-07-08 11:30 253 查看

1.
tmux
介绍

tmux
是一个优秀的终端复用软件,split窗口。可以在一个terminal下打开多个终端。

即使非正常掉线,也能保证当前的任务运行,这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失。SSH重新连接以后,就可以直接回到原来的工作环境,不但提高了工作效率,还降低了风险,增加了安全性。

tmux完全使用键盘控制窗口,实现窗口的切换功能。

2. 安装

sudo apt-get install tmux
tmux # 打开tmux终端


3. 会话,窗口,面板

根据
tmux
的定义,在开启了
tmux
服务后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板, 虽然其使用方法与终端控制台完全相同。

tmux
使用
C/S
模型构建,主要包括以下单元模块:

server服务器。输入tmux命令时就开启了一个服务器。

session会话。一个服务器可以包含多个会话

window窗口。一个会话可以包含多个窗口。

pane面板。一个窗口可以包含多个面板。

4. 效果图



5. 快捷键操作

C-b ? 显示快捷键帮助

C-b C-o 调换窗口位置,类似与vim 里的C-w

C-b 空格键 采用下一个内置布局

C-b ! 把当前窗口变为新窗口

C-b “ 横向分隔窗口

C-b % 纵向分隔窗口

C-b q 显示分隔窗口的编号

C-b o 跳到下一个分隔窗口

C-b 上下键 上一个及下一个分隔窗口

C-b C-方向键 调整分隔窗口大小

C-b c 创建新窗口

C-b 0~9 选择几号窗口

C-b c 创建新窗口

C-b n 选择下一个窗口

C-b l 切换到最后使用的窗口

C-b p 选择前一个窗口

C-b w 以菜单方式显示及选择窗口

C-b t 显示时钟

C-b ; 切换到最后一个使用的面板

C-b x 关闭面板

C-b & 关闭窗口

C-b s 以菜单方式显示和选择会话

C-b d 退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话

6. 配置

tmux
的系统级配置文件为
/etc/tmux.conf
,用户级配置文件为
~/.tmux.conf
。配置文件实际上就是
tmux
的命令集合,也就是说每行配置均可在进入命令行模式后输入生效。

6.1 设置前缀为Ctrl + a(不建议这么做,vim中Ctrl+a已经被定义)

set -g prefix C-a


6.2 解除Ctrl+b 与前缀的对应关系

unbind C-b


6.3 使
tmux
生效

重启tmux起效

或者先按C+b,然后输入
,进入命令行模式,在命令行模式下输入:

source-file ~/.tmux.conf


6.4 将
Ctrl + r
设置为加载配置文件,并显示”Refleshed configure!”信息

bind C-r source-file ~/.tmux.conf \; display "Refleshed Configure!"


6.5 将切换窗口设置成vim模式

bind-key k select-pane -U # up
bind-key j select-pane -D # down
bind-key h select-pane -L # left
bind-key l select-pane -R # right


上面的最后一条语句会更改
C-a l
的功能,我挺喜欢这个功能的,因为我们很时候都是在两个窗 口或这两个面板中切换,所以我又加入如下语句

bind-key C-l select-window -l


现在我的
l
键可不能随便按了,
Ctrl+a l
是切换面板,
Ctrl+x Ctrl+l
切换窗口,
Ctrl+l
清屏。

6.6 复制模式copy-mode

前缀 [
进入复制模式

space
开始复制,移动光标选择复制区域

Enter
复制并退出copy-mode。

将光标移动到指定位置,按
前缀 ]
粘贴

如果把
tmux
比作
vim
的话,那么我们大部分时间都是处于编辑模式,我们复制的时候可不可以像
vim
一样移动呢?只需要在配置文件中加入如下行即可。

setw -g mode-keys vi #copy-mode 将快捷键设置为vi 模式


6.7 会话

C-x s 以菜单的方式查看并选择会话

C-x :new-session 新建一个会话

C-x d 退出并保存会话

终端运行 tmux attach 返回会话

6.8 命名会话

tmux new -s session

tmux new -s session -d #在后台建立会话

tmux ls #列出会话

tmux attach -t session #进入某个会话

6.9 使当前
pane
最大化

前缀 z
tmux 1.8新特性,最大化当前所在面板

前缀 z
返回原来状态

6.10 滚屏

set-window-option -g mode-mouse on # (setw其实是set-window-option的别名)


6.11 用鼠标切换窗口/调节分屏大小

setw -g mouse-resize-pane on # 开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线)
setw -g mouse-select-pane on # 开启用鼠标点击pane来激活该pane
setw -g mouse-select-window on # 开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称)
setw -g mode-mouse on # 开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本)


6.12 保存Tmux会话

Tmux
会话功能它有一点不好,如果机器重启,那么
Tmux
会话就消失了,包括打开的各个窗口、窗格布局、以及其中跑的程序等所有东东。
Tmux Resurrect
Tmux Continuum
这两个
Tmux
插件正是因此而生的。

Tmux Resurrect

Tmux Resurrect
能够备份
Tmux
会话的各种细节,包括所有会话、窗口、窗格以及它们的顺序,每个窗格的当前工作目录,精确的窗格布局,活动及替代的会话和窗口,窗口聚焦,活动窗格,窗格中运行的程序等等,非常贴心。

安装
Tmux Resurrect


% mkdir ~/.tmux
% cd ~/.tmux
% git clone https://github.com/tmux-plugins/tmux-resurrect.git


官方推荐通过 Tmux 插件管理器来安装,如果你需要安装多个插件,不妨自行尝试。然后在
~/.tmux.conf
中添加下列内容:

run-shell ~/.tmux/tmux-resurrect/resurrect.tmux


保存后,重载 Tmux 配置:

% tmux source-file ~/.tmux.conf


现在,要保存 Tmux 会话,我们只要按
前缀键 + Ctrl-s
就可以了。此时,Tmux 状态栏会显示“Saving …”字样,完毕后会提示 Tmux 环境已保存。

Tmux Resurrect 会将 Tmux 会话的详细信息以文本文件形式保存到
~/.tmux/resurrect
目录。

还原则按
前缀键 + Ctrl-r
即可。

Tmux Continuum(推荐)

Tmux Resurrect 工作很好,只是备份和还原都是手动完成。而 Tmux Continuum 更进一步,它将 Tmux 会话的保存及还原自动化,定时备份,然后在 Tmux 启动时还原。

Tmux Continuum
安装:

% cd ~/.tmux
% git clone https://github.com/tmux-plugins/tmux-continuum.git


接着,将以下内容添加到
~/.tmux.conf


run-shell ~/.tmux/tmux-continuum/continuum.tmux


Tmux Continuum
默认每隔 15 分钟备份一次,如果你觉得频率过高,可以设置为 1 小时一次:

set -g @continuum-save-interval '60'


同样,需要重载 Tmux 配置
tmux source-file ~/.tmux.conf


需要注意的是,使用这两个 Tmux 插件要求 Tmux 是 1.9 及以上版本,如果不符合要求,赶紧升级吧,相信你会觉得这会非常值得。

6.13 启动与关闭服务器

tmux # 启动
tmux kill-server # 关闭


6.14 进入和退出会话

tmux attach
前缀 d # 或者 前缀 C-z


6.15 查看版本

tmux -V


【完】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tmux 终端