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初探


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM