前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tmux配置

Tmux配置

作者头像
hotarugali
发布2022-11-23 16:50:22
3.1K0
发布2022-11-23 16:50:22
举报
文章被收录于专栏:hotarugaliの技术分享

1. 简介

Tmux 是一款优秀的终端复用工具,使用它最直观的好处就是,通过一个终端登录远程主机并运行 tmux 后,在其中可以开启多个控制台而无需再「浪费」多余的终端来连接这台远程主机。Tmux 提供了非常多的强劲功能:

  • 提供了强劲的、易于使用的命令行界面。
  • 可横向和纵向分割窗口。
  • 窗格可以自由移动和调整大小,或直接利用四个预设布局之一。
  • 支持 UTF-8 编码及 256 色终端。
  • 可在多个缓冲区进行复制和粘贴。
  • 可通过交互式菜单来选择窗口、会话及客户端。
  • 支持跨窗口搜索。
  • 支持自动及手动锁定窗口。
  • 可以自由配置绑定快捷键。

在 Tmux 逻辑中,Server > Session > Window > Pane 这个大小和层级顺序是极其重要的,直接关系到工作效率:

  • Server:整个 tmux 的后台服务器。有时候更改配置不生效,就要使用 tmux kill-server 来重启 tmux
  • Session:每次使用 tmux 命令启动,便会建立一个会话 Session,一个服务器可以保持多个会话连接,同时我们也可以在多个会话之间切换。一个 Session 可以开启多个 Window,一般只要保存一个 Session 就足够了。
  • Window:一个 Session 可包含多个 Window,每个 Window 都以标签的形式显示在 Session 下面的状态栏里。可以针对每种任务分一个 Window。如下载一个 Window,编程一个 window。
  • Panel:每个 Window 可以划分多个 Panel,实现分屏显示。

2. 命令

2.1 外部命令

Tmux 的常用外部命令如下:

代码语言:javascript
复制
# 新建 Session
tmux [new -s 会话名 -n 窗口名]

# 恢复 Session
tmux at [-t 会话名]

# 列出所有 Sessions
tmux ls

# 关闭 Session
tmux kill-session -t 会话名

# 关闭整个 Tmux 服务器
tmux kill-server

2.2 内部指令

所谓内部指令,就是进入 Tmux 后,并按下前缀键后的指令,一般前缀键为 Ctrl+b。虽然 Ctrlb 离得很远但是不建议改前缀键,因为别的键也不见得方便好记不冲突。还是记忆默认的比较可靠。

  • 系统指令

前缀

指令

描述

Ctrl+b

?

显示快捷键帮助文档

Ctrl+b

d

断开当前会话

Ctrl+b

D

选择要断开的会话

Ctrl+b

Ctrl+z

挂起当前会话

Ctrl+b

r

强制重载当前会话,刷新配置文件

Ctrl+b

I

下载和更新插件

Ctrl+b

s

显示会话列表用于选择并切换

Ctrl+b

:

进入命令行模式,此时可直接输入ls等命令

Ctrl+b

[

进入复制模式,按 q 退出

Ctrl+b

]

粘贴复制模式中复制的文本

Ctrl+b

~

列出提示信息缓存

  • 窗口(Window)指令

前缀

指令

描述

Ctrl+b

c

新建窗口

Ctrl+b

&

关闭当前窗口

Ctrl+b

0~9

切换到指定窗口

Ctrl+b

p

切换到上一窗口

Ctrl+b

n

切换到下一窗口

Ctrl+b

w

打开窗口列表,用于且切换窗口

Ctrl+b

,

重命名当前窗口

Ctrl+b

.

修改当前窗口编号(适用于窗口重新排序)

Ctrl+b

f

快速定位到窗口(输入关键字匹配窗口名称)

  • 面板(Panel)指令

前缀

指令

描述

Ctrl+b

"

当前面板上下一分为二,下侧新建面板

Ctrl+b

%

当前面板左右一分为二,右侧新建面板

Ctrl+b

x

关闭当前面板(关闭前需确认)

Ctrl+b

z

最大化当前面板,再重复一次按键后恢复正常(v1.8 版本新增)

Ctrl+b

!

将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效)

Ctrl+b

;

切换到最后一次使用的面板

Ctrl+b

q

显示面板编号,在编号消失前输入对应的数字可切换到相应的面板

Ctrl+b

{

向前置换当前面板

Ctrl+b

}

向后置换当前面板

Ctrl+b

Ctrl+o

顺时针旋转当前窗口中的所有面板

Ctrl+b

方向键

移动光标切换面板

Ctrl+b

o

选择下一面板

Ctrl+b

空格键

在自带的面板布局中循环切换

Ctrl+b

Alt+方向键

以 5 个单元格为单位调整当前面板边缘

Ctrl+b

Ctrl+方向键

以 1 个单元格为单位调整当前面板边缘

Ctrl+b

t

显示时钟

3. 配置

Tmux 的系统配置文件为 /etc/tmux.conf;用户配置文件路径为 ~/.tmux.conf,一开始需要用户手动创建。当修改了 .tmux.conf 中的配置项后,需要重启 Tmux 使配置生效,即在 Tmux 中执行:

代码语言:javascript
复制
restart tmux

或者在 Tmux 窗口中,先按下 Ctrl+b 指令前缀,再按 : 后输入以下命令:

代码语言:javascript
复制
source-file ~/.tmux.conf

3.1 默认 Shell

Tmux 默认的 Shell 为 Bash Shell,可以添加以下配置项修改默认 Shell,比如修改为 Zsh Shell:

代码语言:javascript
复制
set-option -g default-shell /bin/zsh

或者使用以下配置项:

代码语言:javascript
复制
set-option -g default-command /bin/zsh

default-commanddefault-shell 的区别在于 default-command 的优先级更高,只有当 default-command 为空时,才会使用 default-shell

3.2 鼠标控制

Tmux 鼠标控制功能能够实现:

  • 选取文本
  • 调整面板大小
  • 选中并切换面板

首先查看 Tmux 的版本:

代码语言:javascript
复制
tmux -V

根据不同的版本编缉配置文件:

代码语言:javascript
复制
vim ~/.tmux.conf
  • Tmux 2.1 之后的版本:
代码语言:javascript
复制
set-option -g mouse on
  • Tmux 2.1 之前版本:
代码语言:javascript
复制
setw -g mouse-resize-pane on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mode-mouse on

配置文件 .tmux.conf 对所有之后新建的 Tmux Session 都会起作用。如果只想对当前的 Session 启用,可以先按 Ctrl + B,松开以后再输入冒号,然后输入上面的配置命令即可。

3.3 面板控制

  • 更改新增面板快捷键
代码语言:javascript
复制
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默认进入当前目录
unbind '%'
bind = splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默认进入当前目录
  • 面板调整大小快捷键
代码语言:javascript
复制
bind -r ^k resizep -U 10 # 绑定 Ctrl+k 为往 ↑ 调整面板边缘 10 个单元格
bind -r ^j resizep -D 10 # 绑定 Ctrl+j 为往 ↓ 调整面板边缘 10 个单元格
bind -r ^h resizep -L 10 # 绑定 Ctrl+h 为往 ← 调整面板边缘 10 个单元格
bind -r ^l resizep -R 10 # 绑定 Ctrl+l 为往 → 调整面板边缘 10 个单元格

3.4 复制模式

修改 Tmux 的复制模式为 Vi 风格:

代码语言:javascript
复制
setw -g mode-keys vi 	# 开启 Vi 风格后,支持 Vi 的 C-d、C-u、hjkl 等快捷键
bind -t vi-copy v begin-selection 	# 绑定 v 键为开始选择文本
bind -t vi-copy y copy-selection 	# 绑定 y 键为复制选中文本
bind p pasteb 			# 绑定 p 键为粘贴文本(p 键默认用于进入上一个窗口,不建议覆盖)

3.5 更多优化

  • 设置窗口面板起始序号
代码语言:javascript
复制
set -g base-index 1 		# 设置窗口的起始下标为 1
set -g pane-base-index 1 	# 设置面板的起始下标为 1
  • 自定义状态栏
代码语言:javascript
复制
set -g status-utf8 on 		# 状态栏支持utf8
set -g status-interval 1 	# 状态栏刷新时间
set -g status-justify left 	# 状态栏列表左对齐
setw -g monitor-activity on # 非当前窗口有内容更新时在状态栏通知

set -wg window-status-format " #I #W " 				# 状态栏窗口名称格式
set -wg window-status-current-format " #I:#W#F " 	# 状态栏当前窗口名称格式(#I:序号,#w:窗口名称,#F:间隔符)
set -wg window-status-separator "" 					# 状态栏窗口名称之间的间隔

附录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 命令
    • 2.1 外部命令
      • 2.2 内部指令
      • 3. 配置
        • 3.1 默认 Shell
          • 3.2 鼠标控制
            • 3.3 面板控制
              • 3.4 复制模式
                • 3.5 更多优化
                • 附录
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档