[Linux] tmux 终端复用命令行工具
tmux 终端复用命令行工具
tmux 是一款终端复用命令行工具,通常用于 Terminal 的窗口管理.可以在终端软件重启后通过命令行恢复上次的 session.
安装运行
macOS 上使用 Homebrew 安装即可:
brew install tmux
在 shell 主进程下运行以下命令可以操作 tmux 会话:
tmux new -s foo # 新建名称为 foo 的会话
tmux ls # 列出所有 tmux 会话
tmux a # 恢复至上一次的会话
tmux a -t foo # 恢复名称为 foo 的会话,会话默认名称为数字
tmux kill-session -t foo # 删除名称为 foo 的会话
tmux kill-server # 删除所有的会话
快捷键
一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 ⌃b 来组合使用.
窗格(pane)操作
- % 左右平分出两个窗格
 - " 上下平分出两个窗格
 - x 关闭当前窗格
 - { 当前窗格前移
 - } 当前窗格后移
 - ; 选择上次使用的窗格
 - o 选择下一个窗格,也可以使用上下左右方向键来选择
 - space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1 至 ⌥5来切换
 - z 最大化当前窗格,再次执行可恢复原来大小
 - q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格
 
窗口操作
- c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态
 - p 切换至上一窗口
 - n 切换至下一窗口
 - w 窗口列表选择,注意 macOS 下使用 ⌃p 和 ⌃n 进行上下选择
 - & 关闭当前窗口
 - , 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id
 - 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
 - f 根据窗口名搜索选择窗口,可模糊匹配
 
会话操作
在 tmux 会话中,使用前缀快捷键 ⌃b 配合以下快捷键可操作会话:
- $ 重命名当前会话
 - s 选择会话列表
 - d detach 当前会话,运行后将会退出 tmux 进程,返回至 shell 主进程
 
常见配置与问题
1、鼠标滚屏
在中.tmux.conf 配置文件增加以下内容:
开启鼠标模式
set -g mode-mouse on
允许鼠标选择窗格
set -g mouse-select-pane on
如果喜欢给窗口自定义命名,那么需要关闭窗口的自动命名
set-option -g allow-rename off
如果对 vim 比较熟悉,可以将 copy mode 的快捷键换成 vi 模式
set-window-option -g mode-keys vi
配置文件修改完成后,可以 tmux kill-server 重启所有 tmux 进程,或者在 tmux 会话中使用 ⌃b : 进入控制台模式,输入 source-file ~/.tmux.conf 命令重新加载配置。
2、复制
方法 1:使用 ⌃b z 进入窗格全屏模式,鼠标选择文本的同时按住 option 键 ⌥,然后使用 ⌘c 进行复制;
方法 2 配置文件增加以下配置后,ESC进入复制模式 v 选择文本 y 复制文本.
bind Escape copy-mode # 绑定esc键为进入复制模式
bind -T copy-mode-vi v send-keys -X begin-selection # 绑定v键为开始选择文本
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel # 绑定y键为复制选中文本
我的.tmux.conf
# 修改 ctrl+b 前缀为 ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# set-option -g prefix2 `
# 绑定重载 settings 的热键
bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."
# 设置为vi编辑模式
setw -g mode-keys vi # 设置为vi编辑模式
bind Escape copy-mode # 绑定esc键为进入复制模式
bind -T copy-mode-vi v send-keys -X begin-selection # 绑定v键为开始选择文本
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel # 绑定y键为复制选中文本
set-option -g default-command 'exec reattach-to-user-namespace -l zsh'
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy'
# bind-key -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy"
# bind-key C-c run-shell 'tmux save-buffer - | reattach-to-user-namespace pbcopy'
# bind-key C-v run-shell 'reattach-to-user-namespace pbpaste | tmux load-buffer - \; paste-buffer -d'
# 设置window的起始下标为1
set -g base-index 1
# 设置pane的起始下标为1
set -g pane-base-index 1
#-- base --#
set -g default-terminal "screen-256color"
set -g display-time 3000
set -g history-limit 65535
# 鼠标支持
set-option -g mouse on
# 关闭默认窗口标题
set -g set-titles off
#-- bindkeys --#
unbind '"'
bind - splitw -v -c '#{pane_current_path}'
unbind %
bind | splitw -h -c '#{pane_current_path}'
bind c new-window -c "#{pane_current_path}"
# 定义上下左右键为hjkl键
bind -r k select-pane -U
bind -r j select-pane -D
bind -r h select-pane -L
bind -r l select-pane -R
# 定义面板边缘调整的^k ^j ^h ^l快捷键
bind -r ^k resizep -U 1 # upward (prefix Ctrl+k)
bind -r ^j resizep -D 1 # downward (prefix Ctrl+j)
bind -r ^h resizep -L 1 # to the left (prefix Ctrl+h)
bind -r ^l resizep -R 1 # to the right (prefix Ctrl+l)
# 定义交换面板的键
# bind ^u swap-pane -U
# bind ^d swap-pane -D
# bind e lastp
# bind ^e last
# bind q killp
#bind '~' splitw htop
#bind ! splitw ncmpcpp
# bind m command-prompt "splitw 'exec man %%'"
# bind @ command-prompt "splitw 'exec perldoc -t -f %%'"
# bind * command-prompt "splitw 'exec perldoc -t -v %%'"
# bind % command-prompt "splitw 'exec perldoc -t %%'"
# bind / command-prompt "splitw 'exec ri -T %% | less'"
# 输出日志到桌面
# bind P pipe-pane -o "cat >>~/Desktop/#W.log" \; display "Toggled logging to ~/Desktop/#W.log"
#-- statusbar --#
set -g status-right-attr bright
set -g status-bg black
set -g status-fg yellow
# 设置状态栏高亮
setw -g window-status-current-attr bright
# 设置状态栏红底白字
setw -g window-status-current-bg red
setw -g window-status-current-fg white
# 设置状态栏列表左对齐
set -g status-justify left
# 非当前window有内容更新时在状态栏通知
setw -g monitor-activity on
set -g status-interval 1
#set -g visual-activity on
setw -g automatic-rename off
setw -g allow-rename off
# 最大化(默认为z,增加模拟的b指令)
# unbind b
# bind b run ". ~/.tmux/zoom"
# set -g status-keys vi
# plugin-manager
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# plugins
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# load-plugins-without-manager
#run-shell ~/.tmux/tmux-resurrect/resurrect.tmux
#run-shell ~/.tmux/tmux-continuum/continuum.tmux
# plugins-settings
set -g @resurrect-strategy-vim 'session' # for vim
set -g @resurrect-strategy-nvim 'session' # for neovim
set -g @continuum-save-interval '180' # '0'
set -g @continuum-restore 'on'
set -g @continuum-boot-options 'fullscreen'
set -g status-right 'Continuum status: #{continuum_status}'
set -wg window-status-format " #I:#W "
setw -g window-status-current-format " #I:#W "
set -wg window-status-separator ""
set -g message-style "bg=#202529, fg=#91A8BA"
set -g @resurrect-capture-pane-contents 'on' # 恢复面板内容
run '~/.tmux/plugins/tpm/tpm'
												
											[Linux] tmux 终端复用命令行工具的更多相关文章
- 【No.2】监控Linux性能25个命令行工具
		
接着上一篇博文继续 [No.1]监控Linux性能25个命令行工具 10:mpstat -- 显示每个CPU的占用情况 该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一 ...
 - 【No.1】监控Linux性能25个命令行工具
		
如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?通过以下命令或者工具可以快速定位 top vmstat lsof tcpdump netsta ...
 - Linux 性能监控之命令行工具
		
引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...
 - 显示器 Linux 性能 18 (一个命令行工具传递)
		
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...
 - [linux] tmux终端复用神器 [转载]
		
转载https://www.cnblogs.com/kevingrace/p/6496899.html Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授 ...
 - Linux强制杀进程命令行工具
		
需求, 有时候我们会有手动启动程序, 但是又在后台, 没有像服务那样有start, 和stop的程序, 这时候需要用强制杀进程方式 涉及工具, awk, sed, xargs, kill 需求一: 已 ...
 - 20个linux命令行工具监视性能(下)
		
昨天晚上第一次翻译了<20 Command Line Tools to Monitor Linux Performance>中的前十个命令,翻译得不是很好,今天晚上继续把后面的十个也翻译给 ...
 - 微软开放技术发布针对 Mac 和 Linux 的更新版 Azure Node.JS SDK 和命令行工具
		
发布于 2013-12-04 作者 Eduard Koller 这次为我们使用Linux 的朋友带来了更多关于部署云上虚拟机的消息.今天,微软开放技术有限公司 (MS Open Tech),想与大家分 ...
 - -Shell 命令行工具 Cmder Babun Zsh MD
		
目录 目录 Cmder:window 下增强型的 cmd + bash 简介 配置 解决中文乱码问题 添加到右键菜单 添加至环境变量 修改命令提示符号 自定义aliases Readme.md 设置c ...
 
随机推荐
- React 学习一  运行
			
最近项目准备使用React作为前端,主要第一比较火,第二比较小.抽空先来学习一下. 首先下载资源文件:压缩后不到50KB,是挺小的哦. 其中:react.js 是 React 的核心库,react-d ...
 - UFLDL 教程学习笔记(二)
			
课程链接:http://ufldl.stanford.edu/tutorial/supervised/LogisticRegression/ 这一节主要讲的是梯度的概念,在实验部分,比较之前的线性回归 ...
 - 洛谷P2016战略游戏
			
传送门啦 战略游戏这个题和保安站岗很像,这个题更简单,这个题求的是士兵人数,而保安站岗需要求最优价值. 定义状态$ f[u][0/1] $ 表示 $ u $ 这个节点不放/放士兵 根据题意,如果当前节 ...
 - 关于SizeOf、Length
			
结论: 到底什么时候用Length,SizeOf呢,我总结下使用Length,Sizeof的场景 1.Length(静态数组或动态数组)----没有问题 2.Length(string/shortst ...
 - 解决Url带中文参数乱码问题
			
这里我来介绍下如何配置Tomcat 来解决Url带中文参数乱码问题: 首先打开Tomcat安装目录,以Tomcat7为例,其他版本基本一样: 打开conf文件 打开server.xml 大概在70行左 ...
 - centos 6.x 部署uwsgi+flask项目
			
一.项目背景 1. 公司需求要做一个在线统计页面; 2. 统计在线人数,进行人数数据展示; 3. 类似QQ官网在线人数 二.测试环境 [root@linux-node2 ~]# cat /etc/*r ...
 - SQL Server数据库存在判断语句及系统表简介
			
Transact-SQL Exists Sentences--判断数据库是否存在IF EXISTS(SELECT * FROM master.sysdatabases WHERE name=N'库名' ...
 - [新手]在macOS环境下安装xdebug
			
使用环境 masOS 10.12 使用MAMP安装的PHP环境 在新安装的系统中,安装xdebug,遇到了一些小问题; P.S. 重新按照xdebug官网的指南安装了一次,把上次安装失败的xd ...
 - 【笔记】Python简明教程
			
Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...
 - day6面向对象
			
面向对象介绍(http://www.cnblogs.com/alex3714/articles/5188179.htm) 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就 ...