Tmux使用及配置

安装最新版Tmux

下载地址:releases

Centos下载tmux安装教程

允许鼠标滚动

新的配置项已简化为

set -g mouse on

将他写到 ~/.tmux.conf 中然后执行

tmux source ~/.tmux.conf

注意2.1版本以下的配置项在新版本中已经被废弃

setw -g mouse-resize-pane on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mode-mouse on

使用不同的 Shell

默认使用的是 bash, 如果要改成 zsh,可以在 .tmux.conf 中配置:

set -g default-command /bin/zsh
set -g default-shell /bin/zsh

激活持续时间

set-option -g display-time 5000                   # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000                    # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒

常用组合键

ctrl+b ?            显示快捷键帮助
ctrl+b 空格键       采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
ctrl+b !            把当前窗口变为新窗口
ctrl+b  "           模向分隔窗口
ctrl+b %            纵向分隔窗口
ctrl+b q            显示分隔窗口的编号
ctrl+b 上下键      上一个及下一个分隔窗口
ctrl+b C-方向键    调整分隔窗口大小
ctrl+b &           确认后退出当前tmux
ctrl+b [           复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。
ctrl+b ]           粘贴复制模式中复制的文本
ctrl+b {           向前置换当前面板
ctrl+b }           向后置换当前面板
ctrl+b C+o         顺时针旋转当前窗口中的所有面板
ctrl+b o           选择下一面板
ctrl+b c           创建新窗口
ctrl+b l           最后使用的窗口
ctrl+b w           以菜单方式显示及选择窗口
ctrl+b s           以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
ctrl+b t           显示时钟。然后按enter键后就会恢复到shell终端状态
ctrl+b d           脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
ctrl+b D           选择要断开的会话
ctrl+b ~           列出提示信息缓存
ctrl+b :           进入命令行模式,此时可直接输入ls等命令
ctrl+b C+z         挂起当前会话
ctrl+b &           关闭当前窗口(关闭前需输入y or n)
ctrl+b 0~9         切换到指定窗口
ctrl+b p           切换到上一窗口
ctrl+b n           切换到下一窗口
ctrl+b f           快速定位到窗口(输入关键字匹配窗口名称)

个性化配置

tmux加上下列参数,实现个性化设置
set-option -g base-index 1                        # 窗口的初始序号;默认为0,这里设置为1
set-option -g display-time 5000                   # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000                    # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
set-option -g status-keys vi                      # 操作状态栏时的默认键盘布局;可以设置为vi或emacs
set-option -g status-utf8 on                      # 开启状态栏的UTF-8支持

---
set-option -g status-bg blue
set-option -g status-fg '#bbbbbb'
set-option -g status-left-fg green
set-option -g status-left-bg blue
set-option -g status-right-fg green
set-option -g status-right-bg blue
set-option -g status-left-length 10               # 状态栏左方的内容长度;
set-option -g status-right-length 15              # 状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
set-option -g status-left '[#(whoami)]'           # 状态栏左方的内容
set-option -g status-right '[#(date +" %m-%d %H:%M ")]'     # 状态栏右方的内容;这里的设置将得到类似23:59的显示
set-option -g status-justify "centre"             # 窗口列表居中显示
set-option -g default-terminal "screen-256color"  # 支持256色显示
分割窗口边界的颜色
set-option -g pane-active-border-fg '#55ff55'
set-option -g pane-border-fg '#555555'
​
---
此类设置可以在命令行模式中输入show-window-options -g查询
set-window-option -g mode-keys vi    # 复制模式中的默认键盘布局;可以设置为vi或emacs
set-window-option -g utf8 on         # 开启窗口的UTF-8支持
set-window-option -g mode-mouse on   # 窗口切换后让人可以用鼠标上下滑动显示历史输出
​
---
窗口切分快捷键(没设置成功)
bind \ split-window -h                      # 使用 \ 将窗口竖切
bind - split-window -v                      # 使用 - 将窗口横切
bind K confirm-before -p "kill-window #W? (y/n)" kill-window    # 使用大写 K 来关闭窗口
bind '"' choose-window                      # 双引号选择窗口
​
---
Pane之间切换的快捷键
bind h select-pane -L                       # 定位到左边窗口的快捷键
bind j select-pane -D                       # 定位到上边窗口的快捷键
bind k select-pane -U                       # 定位到下方窗口的快捷键
bind l select-pane -R                       # 定位到右边窗口的快捷键

整理收集

# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix

# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window

# Mouse mode
set -g mouse on


# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v

# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"

Send prefix
把prefix的ctrl+b变为了ctrl+a,因为这样按起来方便些。基本上用tmux的都改了这个。

Use Alt-arrow keys to switch panes
不用按prefix,直接用alt+箭头在pane之间switch。实际用过之后才发现真是太方便了!

Shift arrow to switch windows
不用按prefix,直接用shift+箭头在window之间switch。太方便了!

Mouse mode
开启鼠标模式。用鼠标就能切换window,pane,还能调整pane的大小,方便!

Set easier window split keys
这一部分是用来更方便切分pane的。prefix + v 代表竖着切,prefix + h 代表横着切。比起默认的切割方法不仅直观而且方便。

Easy config reload
下一次如果修改了.tmux.conf的设置的话,不用关掉tmux。直接用prefix+r,就能重新加载设置。

别名

alias tn='tn(){tmux new -s $1};tn'
alias tk='tk(){tmux kill-session -t $1};tk'
alias tka='tmux kill-server'
alias td='tmux detach'
alias tl='tmux list-session'
alias tad='tad(){tmux attach -t $1};tad'
alias tsw='tsw(){tmux switch -t $1};tsw'
alias tren='tren(){tmux rename-session -t 	$1 $2};tren'
alias tv='tmux split-window'
alias th='tmux split-window -h'

目前使用的方案

github上有比较好的,建议使用.

$ cd ~
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .

WSL复制解决方案

目前wsl中的复制只能复制一个屏幕的,内容过多就要分段复制,非常不好用

# buffer缓存复制到Linux系统粘贴板
bind C-c run " tmux save-buffer - | /mnt/c/Windows/System32/clip.exe"  

上述的操作是将tmux进程中的buffer缓存复制到clip.exe中

复制流程为:

使用快捷键 ctrl+b [ 进入复制模式
移动光标选择上下文,使用v键开始选择文本
使用y键为复制选中文本
使用ctrl+b ctrl+c 系统复制

流程2
使用快捷键 ctrl+b [ 进入复制模式
移动光标选择上下文,使用空格键开始选择文本
使用Enter键为复制选中文本
使用ctrl+b ctrl+c 系统复制

这里使用window中的clip.exe

这里要注意,必须要设置/etc/wsl.conf文件

[interop]
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true

第一个是是否允许运行window中的程序

第二个是否带入window中的环境变量

我这边只开了第一个enabled

网上的解决方案

gpakosz的配置中,里面设置的是window的复制为:

$ grep "clip.exe" -in ~/.tmux.conf
152:if -b 'command -v clip.exe > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | clip.exe"'
757:#   command -v clip.exe > /dev/null 2>&1 && command='clip\.exe'

可以发现,更加的方便,但是必须打开/etc/wsl.conf中的环境变量开关

或者/etc/profile中添加环境变量

export PATH=$PATH:/mnt/c/Windows/System32

参考:

Tmux 使用教程

tmux的使用方法和个性化配置

Tmux使用手册

tmux简洁教程及config关键配置

Tmux 快捷键 & 速查表 & 简明教程

Linux终端复用神器-tmux初探

posted @ 2020-07-04 23:46  hongdada  阅读(2895)  评论(0编辑  收藏  举报