tmux

個人~/.tmux.confhtml

set-window-option -g mode-keys vi #能夠設置爲vi或emacs
set-window-option -g utf8 on #開啓窗口的UTF-8支持
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -Rlinux

快捷鍵git

           C-b  將前綴密鑰(C-b)發送到應用程序。
           C-o  向前旋轉當前窗口中的窗格。
           C-z  暫停tmux客戶端。
           !    將當前窗格打開窗口。
           "      將當前窗格拆分爲兩個,頂部和底部。
           #    列出全部粘貼緩衝區。
           $      重命名當前會話。
           %    將當前窗格分爲左,右兩個。
           &     殺死當前窗口。
           '       提示選擇一個窗口索引。
           (      將附加的客戶端切換到上一個會話。
           )      將鏈接的客戶端切換到下一個會話。
           ,   重命名當前窗口。
            -    刪除最近複製的文本緩衝區。
           .    提示索引移動當前窗口。
           0到9  選擇窗口0到9。
           :  輸入tmux命令提示符。
           ;  移至先前活動的窗格。
           =  從列表中選擇要交互粘貼的緩衝區。
           ?  列出全部鍵綁定。
           D  選擇要分離的客戶端。
           L  將鏈接的客戶端切換回上一個會話。
           [  進入複印模式以複製文本或查看歷史記錄。
           ]  粘貼最近複製的文本緩衝區。
           c  建立一個新窗口。
           d  分離當前客戶端。
           f  提示在打開的窗口中搜索文本。
           i  顯示有關當前窗口的一些信息。
           l  移至先前選擇的窗口。
           n  轉到下一個窗口。
           o  選擇當前窗口中的下一個窗格。
           p  切換到上一個窗口。
           q  簡要顯示窗格索引。
           r  強制重繪附加的客戶端。
           m  標記當前窗格(請參閱select-pane -m)。
           M  清除標記的窗格。
           s  以交互方式爲鏈接的客戶端選擇新會話。github

           t  顯示時間。
           w  以交互方式選擇當前窗口。
           x  殺死當前窗格。
           z  切換當前窗格的縮放狀態。
           {  將當前窗格與前一個窗格交換。
           }  使用下一個窗格交換當前窗格。
           〜  顯示來自tmux的先前消息(若是有)。
           Page Up  進入複印模式並向上滾動一頁。
           方向鍵   切換到當前窗格上方,下方,左側或右側的窗格。
           M-1到M-5   在五種預設佈局中的一種中排列窗格:偶數水平,偶數垂直,主水平,主垂直或平鋪。
           空格  在下一個預設佈局中排列當前窗口。
           M-n  使用鈴聲或活動標記移動到下一個窗口。
           M-o  向後旋轉當前窗口中的窗格。
           M-p  使用鈴聲或活動標記移動到上一個窗口。
           C-Up,C-Down
           C-Left,C-Right
                       以一個單元格的步長調整當前窗格的大小。
           M-Up,M-Down
           M-Left,M-Right
                       以五個單元格爲步驟調整當前窗格的大小。ubuntu

     可使用bind-key和unbind-key命令更改密鑰綁定。vim

 

 https://wdxtub.com/2016/03/30/tmux-guide/windows

tmux 指南

今天試用了一下 tmux,發現簡直是神器!之前還傻傻不停開窗口,如今一個窗口就能夠都搞定啦!緩存


更新記錄服務器

  • 2016.03.30: 初稿

Tmux 簡單來講就是終端裏的『窗口管理器』,若是我使用終端登陸到遠程主機並運行前臺程序,那麼這個窗口等於就被佔用了,想要看一下 CPU 的使用率,就得再鏈接一次。可是若是在遠程主機上運行 tmux,那麼就能夠開啓多個控制檯(相似於窗口),至關高效,比方說能夠像下面這樣:session

一個面板監視服務器,一個面板查看硬件情況

須要注意的是,這裏是在我本地使用 tmux,最好在遠程主機也安裝 tmux,這樣就只須要鏈接一次。

Hello World

前面提到的窗口管理只是 tmux 功能的一小部分,另外一個頗有用的功能就是,鏈接到遠程主機以後,一旦斷開,那麼當前帳戶登陸的任務就被取消了,可是使用 tmux 能夠在斷開以後繼續工做,下次登陸能夠查看。其餘的功能還有:

  1. 窗口切換,每一個窗口裏還能夠分割面板
  2. 配置方便,可使用腳本
  3. 相似 vim 的雙層操做邏輯
  4. 複製粘貼緩衝區

安裝的話也很簡單,在 mac 下直接 brew install tmux(前提須要安裝 homebrew),ubuntu 下則直接 sudo apt-get install tmux

在終端中輸入 tmux 就能夠打開一個新的 tmux session,tmux 的全部操做必須先使用一個前綴鍵(默認是 ctrl + b)進入命令模式,或者說進入控制檯,就像 vim 中的 esc。

基本操做

信息查詢

  • tmux list-keys 列出全部能夠的快捷鍵和其運行的 tmux 命令
  • tmux list-commands 列出全部的 tmux 命令及其參數
  • tmux info 流出全部的 session, window, pane, 運行的進程號,等。

窗口控制

先來看看在 tmux 以外如何進行控制

  • session 會話:session是一個特定的終端組合。輸入tmux就能夠打開一個新的session
    • tmux new -s session_name 建立一個叫作 session_name 的 tmux session
    • tmux attach -t session_name 從新開啓叫作 session_name 的 tmux session
    • tmux switch -t session_name 轉換到叫作 session_name 的 tmux session
    • tmux list-sessions / tmux ls 列出現有的全部 session
    • tmux detach 離開當前開啓的 session
    • tmux kill-server 關閉全部 session
  • window 窗口:session 中能夠有不一樣的 window(可是同時只能看到一個 window)
    • tmux new-window 建立一個新的 window
    • tmux list-windows
    • tmux select-window -t :0-9 根據索引轉到該 window
    • tmux rename-window 重命名當前 window
  • pane 面板:window 中能夠有不一樣的 pane(能夠把 window 分紅不一樣的部分)
    • tmux split-window 將 window 垂直劃分爲兩個 pane
    • tmux split-window -h 將 window 水平劃分爲兩個 pane
    • tmux swap-pane -[UDLR] 在指定的方向交換 pane
    • tmux select-pane -[UDLR] 在指定的方向選擇下一個 pane

更經常使用的是在 tmux 中直接經過默認前綴 ctrl + b 以後輸入對應命令來操做,具體以下(這裏只列出輸入默認前綴以後須要輸入的操做):

基本操做

  • ? 列出全部快捷鍵;按q返回
  • d 脫離當前會話,可暫時返回Shell界面
  • s 選擇並切換會話;在同時開啓了多個會話時使用
  • D 選擇要脫離的會話;在同時開啓了多個會話時使用
  • : 進入命令行模式;此時可輸入支持的命令,例如 kill-server 關閉全部tmux會話
  • [ 複製模式,光標移動到複製內容位置,空格鍵開始,方向鍵選擇複製,回車確認,q/Esc退出
  • ] 進入粘貼模式,粘貼以前複製的內容,按q/Esc退出
  • ~ 列出提示信息緩存;其中包含了以前tmux返回的各類提示信息
  • t 顯示當前的時間
  • ctrl + z 掛起當前會話

窗口操做

  • c 建立新窗口
  • & 關閉當前窗口
  • [0-9] 數字鍵切換到指定窗口
  • p 切換至上一窗口
  • n 切換至下一窗口
  • l 先後窗口間互相切換
  • w 經過窗口列表切換窗口
  • , 重命名當前窗口,便於識別
  • . 修改當前窗口編號,至關於從新排序
  • f 在全部窗口中查找關鍵詞,便於窗口多了切換

面板操做

  • " 將當前面板上下分屏(我本身改爲了 |
  • % 將當前面板左右分屏(我本身改爲了 -
  • x 關閉當前分屏
  • ! 將當前面板置於新窗口,即新建一個窗口,其中僅包含當前面板
  • ctrl+方向鍵 以1個單元格爲單位移動邊緣以調整當前面板大小
  • alt+方向鍵 以5個單元格爲單位移動邊緣以調整當前面板大小
  • q 顯示面板編號
  • o 選擇當前窗口中下一個面板
  • 方向鍵 移動光標選擇對應面板
  • { 向前置換當前面板
  • } 向後置換當前面板
  • alt+o 逆時針旋轉當前窗口的面板
  • ctrl+o 順時針旋轉當前窗口的面板
  • z 最大化當前所在面板
  • page up 向上滾動屏幕,q 退出
  • page down 向下滾動屏幕,q 退出

由於 iTerm2 的支持,不少切換的操做能夠直接用鼠標進行,很是方便。具體你們能夠本身嘗試一下。

配置

咱們能夠先進行一些簡單的配置,修改 ~/.tmux.conf 便可,讓整個使用更方便。

#-- base --#
 
set -g default-terminal "screen-256color"
set -g display-time 3000
set -g history-limit 10000
set -g base-index 1
set -g pane-base-index 1
set -s escape-time 0
set -g mouse on
 
#-- bindkeys --#
 
# split windows like vim. - Note: vim's definition of a horizontal/vertical split is reversed from tmux's
 
unbind s
bind s split-window -v
bind S split-window -v -l 40
bind v split-window -h
bind V split-window -h -l 120
 
# navigate panes with hjkl
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
 
# key bindings for horizontal and vertical panes
unbind %
bind | split-window -h # 使用|豎屏,方便分屏
unbind '"'
bind - split-window -v # 使用-橫屏,方便分屏
 
# swap panes
bind ^u swapp -U
bind ^d swapp -D
 
bind q killp
bind ^e last
 
unbind r
bind r source-file ~/.tmux.conf \; display "Configuration Reloaded!"
 
#-- statusbar --#
 
set -g status-justify centre
set -g status-left "#[fg=red]s#S:w#I.p#P#[default]"
set -g status-right '[#(whoami)#(date +" %m-%d %H:%M ")]'
set -g status-left-attr bright
set -g status-left-length 120
set -g status-right-length 120
set -g status-utf8 on
set -g status-interval 1
set -g visual-activity on
setw -g monitor-activity on
setw -g automatic-rename off
 
# default statusbar colors
set -g status-bg colour235 #base02
set -g status-fg colour136 #yellow
set -g status-attr default
 
# default window title colors
setw -g window-status-fg colour244
setw -g window-status-bg default
#setw -g window-status-attr dim
 
# active window title colors
setw -g window-status-current-fg colour166 #orange
setw -g window-status-current-bg default
#setw -g window-status-current-attr bright
 
# window title string (uses statusbar variables)
set -g set-titles-string '#T'
set -g status-justify "centre"
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
 
# pane border
set -g pane-active-border-fg '#55ff55'
set -g pane-border-fg '#555555'
 
# message text
set -g message-bg colour235 #base02
set -g message-fg colour166 #orange
 
# pane number display
set -g display-panes-active-colour colour33 #blue
set -g display-panes-colour colour166 #orange
 
# clock
setw -g clock-mode-colour colour64 #green
 
 
# 修改進入命令模式按鍵
# remap prefix to Control + a
# set -g prefix C-a
# unbind C-b
# bind C-a send-prefix

最終的效果是

參考連接

相關文章
相關標籤/搜索