使用tmux分屏(既可以左右分屏,也可以上下分屏)

(1)安装工具

在ubuntu系统中使用sudo apt-get install tmux安装tmux工具

(2)使用工具

  1. 1,输入命令tmux使用工具
  2. 2,上下分屏:ctrl + b 再按 "
  3. 3,左右分屏:ctrl + b 再按 %
  4. 4,切换屏幕:ctrl + b 再按o
  5. 5,关闭一个终端:ctrl + b 再按x
  6. 6,上下分屏与左右分屏切换: ctrl + b 再按空格键

终端分屏tmux

分屏效果

​ tmux并不是一个类似bash的终端,而是管理在管理会话,使用tmux后,其他配置还是和bash或zsh一样。

效果如图:

终端分屏效果演示图

安装tmux

在centOS中,安装tmux只需要一句话

yum install tmux

等待片刻即可安装完成,安装完后,使用的依然是默认的bash或自己配置的zsh。执行下一步的打开窗口后,才可以进行分屏,多窗口等操作。

打开一个新的会话,使用命令

tmux

即可打开一个新的会话,在打开的tmux创建的窗口的时候,才可以分屏,多个窗口等操作。

在博客园看到这样一张图片,对tmux解释的很详细

用tmux可以新建多个窗口,每次只能显示一个窗口,新建的其他窗口进入后台,看不见,但却存在。

一个窗口中可以分割出多个窗格,多个窗格显示在同一个窗口,这就是常见的分屏。

tmux窗口解析

tmux的基本命令

在bash或zsh中输入tmux打开新的会话。可以配置在bash后zsh的配置文件中,启动bash自动运行tmux命令

默认前缀ctrl+b(命令中替换prefix)

tmux中,使用分割窗格等需要使用快捷键。使用每个快捷键前,会先键入前缀, 使得tmux开始监听后面的命令。没有键入前缀,直接使用命令是不会触发tmux。

目前经常使用:

会话:每次断开连接没有关闭tmux,再次连接的时候,运行tmux命令会新建一个会话。当进入bash后,使用tmux ls可以查看后台未关闭的会话。进入会话后,可以使用快捷键,列出存在的会话。

会话命令作用
tmux ls 显示所有的会话
tmux kill-session -t s1 关闭会话s1
tmux kill-session -a -t s1 关闭除s1外的所有会话
tmux kill-server 关闭所有会话
prefix s 在会话中,列出会话,可进行切换

窗格:每个窗口可以显示多个窗格

窗格命令作用
prefix % 水平方向创建窗格
prefix " 垂直方向创建窗格
prefix Up,Down,Left,Right 根据箭头方向切换窗格
prefix }{ 与下上一个窗格交换位置
prefix x 关闭当前窗格
prefix space(空格键) 重新排列当前窗口下的所有窗格

窗口:每个会话,可以包含多个窗口。

窗口命令作用
prefix c 创建一个新窗口
prefix w 列出所有窗口,可进行切换
prefix np 进入下上一个窗口
prefix 0~9 选择编号0~9对应的窗口
prefix & 关闭当前窗口

窗格管理**

prefix %  水平方向创建窗格

prefix "  垂直方向创建窗格

prefix Up|Down|Left|Right  根据箭头方向切换窗格

prefix q  显示窗格编号

prefix o  顺时针切换窗格

prefix }  与下一个窗格交换位置

prefix {  与上一个窗格交换位置

prefix x  关闭当前窗格

prefix space(空格键)  重新排列当前窗口下的所有窗格

prefix !  将当前窗格置于新窗口

prefix Ctrl+o  逆时针旋转当前窗口的窗格

prefix t  在当前窗格显示时间

prefix z  放大当前窗格(再次按下将还原)

prefix i  显示当前窗格信息

会话管理

*常用命令*

tmux new  创建默认名称的会话(在tmux命令模式使用new命令可实现同样的功能,其他命令同理,后文不再列出tmux终端命令)

tmux new -s mysession  创建名为mysession的会话

tmux ls  显示会话列表

tmux a  连接上一个会话

tmux a -t mysession  连接指定会话

tmux rename -t s1 s2  重命名会话s1为s2

tmux kill-session  关闭上次打开的会话

tmux kill-session -t s1  关闭会话s1

tmux kill-session -a -t s1  关闭除s1外的所有会话

tmux kill-server  关闭所有会话

常用快捷键

prefix s  列出会话,可进行切换

prefix $  重命名会话

prefix d  分离当前会话

prefix D  分离指定会话

  

窗口管理

prefix c  创建一个新窗口

prefix ,  重命名当前窗口

prefix w  列出所有窗口,可进行切换

prefix n  进入下一个窗口

prefix p  进入上一个窗口

prefix l  进入之前操作的窗口

prefix 0~9  选择编号0~9对应的窗口

prefix .  修改当前窗口索引编号

prefix '  切换至指定编号(可大于9)的窗口

prefix f  根据显示的内容搜索窗格

prefix &  关闭当前窗口

 

其他命令

tmux list-key  列出所有绑定的键,等同于prefix ?

tmux list-command  列出所有命令

以上参考自: https://www.cnblogs.com/liuguanglin/p/9290345.html


zsh的安装和配置可以参考 https://www.cnblogs.com/to-red/p/11580160.html

centOS安装zsh时,使用命令

yum install zsh

Ubuntu安装zsh时,使用命令

apt-get install zsh

如果需要在每次连接时候,都启动一个新的tmux
可以在zsh的配置文件/.zshrc或bash的/.bashrc配置文件的最后一行加上启动tmux的命令(使用的是哪个终端,编辑哪个终端的配置文件,查看自己使用的终端的命令echo $SHELL)
例如

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

tmux

如果需要在每次连接时候,都打开上次断开连接前的tmux

在zsh/bash的配置文件中的最后,添加一行命令

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

tmux a

-------------------------------------------------------------------------------------------------------------------------

Tmux是很强大的一个终端工具。

在接触它的时候项目需要实现自动分屏,但它的文档和使用教程都只介绍了如何用快捷键分屏操作。后面试过模拟键盘进行操作来自动分屏,但模拟的键盘很容易出现bug,所以想要实现精准的控制自动分出想要的布局,只能通过指令来实现。

这里只介绍tmux的分屏(pane)有关的指令:

左右分屏: tmux split-pane -h  对应快捷键: Ctrl+b    %

上下分屏:tmux spilt-pane -v     对应快捷键: Ctrl+b    "

查看各个分屏(pane)的编号: 快捷键: Ctrl + b    q

选择指定 pane :确定编号后(这里假设要选择0号pane): tmux  select-pane -t 编号

关闭分屏: 快捷键 Ctrl + b    x

设置pane的尺寸:resize-pane -t 编号 -x width -y width   快捷键:Ctrl+b  方向键

下面为网上能搜索到的一些基本指令:

vi emacs 功能

^              M-m          反缩进

Escape        C-g          清除选定内容

Enter          M-w          复制选定内容

j              Down        光标下移

h              Left        光标左移

l              Right        光标右移

L                          光标移到尾行

M              M-r          光标移到中间行

H              M-R          光标移到首行

k              Up          光标上移

d              C-u          删除整行

D              C-k          删除到行末

$              C-e          移到行尾

:              g            前往指定行

C-d            M-Down      向下滚动半屏

C-u            M-Up        向上滚动半屏

C-f            Page down    下一页

w              M-f          下一个词

p              C-y          粘贴

C-b            Page up      上一页

b              M-b          上一个词

q              Escape      退出

C-Down or J    C-Down      向下翻

C-Up or K      C-Up        向下翻

n              n            继续搜索

?              C-r          向前搜索

/              C-s          向后搜索

0              C-a          移到行首

Space          C-Space      开始选中

 C-t          字符调序

启动新会话:

tmux [new -s 会话名 -n 窗口名]

恢复会话:

tmux at [-t 会话名]

列出所有会话:

tmux ls

关闭会话:

tmux kill-session -t 会话名

关闭所有会话:

tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0,

length($1)-1)}' | xargs kill

调整窗口排序

swap-window -s 3 -t 1  交换 3 号和 1 号窗口

swap-window -t 1      交换当前和 1 号窗口

move-window -t 1      移动当前窗口到 1 号
posted @ 2022-11-23 19:54  yangjianfeng  阅读(10307)  评论(0编辑  收藏  举报