Linux【4】-文本编辑3-tmux

tmux是指通过一个终端登录远程主机并运行后,在其中可以开启多个控制台的终端复用软件

一、简介

安装:

mac下tmux的安装

brew install tmux

brew的安装

二、tmux快捷键

Ctrl+b 激活控制台;此时以下按键生效
系统操作 ? 列出所有快捷键;按q返回
d 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
D 选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+z 挂起当前会话
r 强制重绘未脱离的会话
s 选择并切换会话;在同时开启了多个会话时使用
: 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
[ 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
~ 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
窗口操作 c 创建新窗口
& 关闭当前窗口(退出了tumx)
数字键 切换至指定窗口
p 切换至上一窗口
n 切换至下一窗口
l 在前后两个窗口间互相切换
w 通过窗口列表切换窗口
, 重命名当前窗口;这样便于识别
. 修改当前窗口编号;相当于窗口重新排序
f 在所有窗口中查找指定文本
面板操作 将当前面板平分为上下两块
% 将当前面板平分为左右两块
x **关闭当前面板**
! 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小
Space 在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q 显示面板编号
o 在当前窗口中选择下一面板
方向键 移动光标以选择面板
{ 向前置换当前面板
} 向后置换当前面板
Alt+o 逆时针旋转当前窗口的面板
Ctrl+o 顺时针旋转当前窗口的面板

三、具体操作

由于 tmux 允许随时随地断开或重新接入会话(Session),所以最大的作用就是在远程服务器上持久地保存工作状态。一个终端可以有多个会话,一个会话可以有多个窗口

[Ctrl+b]+ ? 显示快捷键帮助

分离会话(detach)

[Ctrl+b] [d]  返回终端界面

看到可用的会话

tmux ls 0: 1 windows (created Wed Dec 9 16:29:12 2015) [186x60] 1: 4 windows (created Mon Dec 14 18:38:23 2015) [186x60]

连接到会话0

tmux attach-session -t 0
简写 tmux attach -t <目标会话名>
tmux a -t <目标会话名>

创建会话

tmux new-session -s dev 创建一个会话,取名为 dev
tmux new -s session-name (缩写)

关闭会话

tmux kill-session -t session-name




<strong>创建新窗口</strong>
C-b c 
<strong>修改当前窗口名称</strong>

c-b ,




Ctrl +b 后  用page up 和page down可以来上下翻页;Esc 退出翻页的状态

tmux下无法滚屏很烦人。 一句话就解决了: CTRL + B 再按

<span style="color: #ff0000;">[</span>

这时就可以用光标键来操作翻页滚屏,然后小写字母推出翻页模式

Ctrl + C 退出

如果需要兼容vim的操作方式,那么在~/.tmux.conf加上一行:

setw -g mode-keys vi

Ctrl +b 后  用z来将一个窗口放大,然后再按z,就返回多窗口模式

3.7 显示时间

Ctrl B   t

tmux的手册非常详尽,请输入man tmux后阅读

四、报错:

报错1:

sessions should be nested with care, unset $TMUX to force

解决办法:在terminal里执行: unset TMUX,然后再执行tmux attach就可以了

报错2:

如果连接上以后,屏幕只占很小的一部分

tmux detach -a

报错3

can't create socket

解决办法:

strace -e trace=file tmux

查看到的报错信息:

open("/lib64/tls/libpthread.so.0", O_RDONLY) = 3
access("/bin/bash", X_OK) = 0
access("/home/xxx/.tmux.conf", R_OK) = -1 ENOENT (No such file or directory)
mkdir("/tmp//tmux-501", 0700) = 0
lstat("/tmp//tmux-501", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
can't create socket
Process 3171 detached

看起来是「/tmp/tmux-501」这个目录出了问题,删掉这个目录,tmux就可以正常启动了。

注: 我这里的问题,是因为qiime 默认的 /tmp 空间不足,所以我修改了TMPDIR的路径,从而导致

参考资料:

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn