tmux的使用方法和個人化配置

來源:互聯網
上載者:User

標籤:

介紹

tmux是一個優秀的終端複用軟體,即使非正常掉線,也能保證當前的任務運行,這一點對於遠程SSH訪問特別有用,網路不好的情況下仍然能保證工作現場不丟失!此外,tmux完全使用鍵盤控制視窗,實現視窗的切換功能。

簡單地說,tmux對於我主要有兩個功能(這應該也是tmux的主要功能):

  1. split視窗。可以在一個terminal下開啟多個終端,也可以對當前螢幕進行各種split,即可以 同時開啟多個顯示範圍更小的終端。
  2. 在使用SSH的環境下,避免網路不穩定,導致工作現場的丟失。想象以下情境, 你在執行一條命令的過程中,由於網路不穩定,SSH串連斷開了。這個時候,你就不知道之前 的那條命令是否執行成功。如果此時你開啟了很多檔案,進入了較深層次的目錄,由於網路 不穩定,SSH串連斷開。重新串連以後,你又不得不重新開啟那些檔案,進入那個深層次的 目錄。如果使用了tmux,重新串連以後,就可以直接回到原來的工作環境,不但提高了工作 效率,還降低了風險,增加了安全性。
安裝
sudo apt-get install tmux

安裝完成後輸入命令tmux即可開啟軟體,介面十分簡單,類似一個下方帶有狀態列的終端控制台;不出意外,這時候你會跟我第一次一樣,覺得tmux沒什麼牛逼的。

會話,視窗,面板

根據tmux的定義,在開啟了tmux伺服器後,會首先建立一個會話,而這個會話則會首先建立一個視窗,其中僅包含一個面板;也就是說,這裡看到的所謂終端控制台應該稱作tmux的一個面板,雖然其使用方法與終端控制台完全相同。

tmux使用C/S模型構建,主要包括以下單元模組:

  • server伺服器。輸入tmux命令時就開啟了一個伺服器。
  • session會話。一個伺服器可以包含多個會話
  • window視窗。一個會話可以包含多個視窗。
  • pane面板。一個視窗可以包含多個面板。
初體驗

我們先來看一張,再來學習tmux的配置和使用我一般都是這麼用,因為我的筆記本只有13寸:-)

 

常用按鍵這裡需要說明一點的是,tmux的任何指令,都包含一個首碼,也就是說,你按了首碼(一組按鍵,預設是Ctrl+b)以後,系統才知道你接下來的指令是發送給tmux的。    C-b ? 顯示快速鍵協助    C-b C-o 調換視窗位置,類似與vim 裡的C-w    C-b 空格鍵 採用下一個內建布局    C-b ! 把當前視窗變為新視窗    C-b " 模向分隔視窗    C-b % 縱向分隔視窗    C-b q 顯示分隔視窗的編號    C-b o 跳到下一個分隔視窗    C-b 上下鍵 上一個及下一個分隔視窗    C-b ALT-方向鍵 調整分隔視窗大小    C-b c 建立新視窗    C-b 0~9 選擇幾號視窗    C-b c 建立新視窗    C-b n 選擇下一個視窗    C-b l 切換到最後使用的視窗    C-b p 選擇前一個視窗    C-b w 以菜單方式顯示及選擇視窗    C-b t 顯示時鐘    C-b ; 切換到最後一個使用的面板    C-b x 關閉面板    C-b & 關閉視窗    C-b s 以菜單方式顯示和選擇會話    C-b d 退出tumx,並儲存當前會話,這時,tmux仍在後台運行,可以通過tmux attach進入 到指定的會話配置我們先來看一下幾個配置,這些配置才是我離不開tmux的原因:-)。tmux的設定檔是~/.tmux.conf,這個檔案可能不存在,你可以自己建立。下面開始配置,首先,有沒有覺得tmux的首碼按起來太不方便了,ctrl與b鍵隔得太遠,很多人把它映射成C+a,也就是在設定檔(~/.tmux.conf)中加入下面這條語句:#設定首碼為Ctrl + aset -g prefix C-a與此同時,取消預設的首碼按鍵:#解除Ctrl+b 與首碼的對應關係unbind C-b配置完以後,重啟tmux起效,或者先按C+b,然後輸入:,進入命令列模式,在命令列模式下輸入:source-file ~/.tmux.conf你也可以跟我一樣,在設定檔中加入下面這句話,以後改了只需要按首碼+r了。#將r 設定為載入設定檔,並顯示"reloaded!"資訊bind r source-file ~/.tmux.conf \; display "Reloaded!"關於首碼,很多人都喜歡改成Ctrl+a,不過我個人更喜歡Ctrl+x,如果你是vim使用者,你一定懂的。還有就是面板的切換很不方便,需要先按首碼,再按方向鍵,還記得vim裡面怎麼切換各個面板的嗎?tmux也可以,因為它支援映射。把首碼映射改成Ctrl+x,再加入如下幾條語句,現在切換視窗就和vim一摸一樣了,頓時覺得親切了很多。#upbind-key k select-pane -U#downbind-key j select-pane -D#leftbind-key h select-pane -L#rightbind-key l select-pane -R上面的最後一條語句會更改C-x l的功能,我挺喜歡這個功能的,因為我們很時候都是在兩個視窗或這兩個面板中切換,所以我又加入如下語句#select last windowbind-key C-l select-window -l現在我的l鍵可不能隨便按了,Ctrl+x l是切換面板,Ctrl+x Ctrl+l切換視窗,Ctrl+l清屏。複製模式copy-mode    首碼 [ 進入複製模式    按 space 開始複製,移動游標選擇複製地區    按 Enter 複製並退出copy-mode。    將游標移動到指定位置,按 PREIFX ] 粘貼如果把tmux比作vim的話,那麼我們大部分時間都是處於編輯模式,我們複製的時候可不可以像vim一樣移動呢?只需要在設定檔(~/.tmux.conf)中加入如下行即可。#copy-mode 將快速鍵設定為vi 模式setw -g mode-keys vi會話    C-x s 以菜單的方式查看並選擇會話    C-x :new-session 建立一個會話    C-x d 退出並儲存會話    終端運行 tmux attach 返回會話命名會話tmux new -s sessiontmux new -s session -d #在後台建立會話tmux ls #列出會話tmux attach -t session #進入某個會話使當前pane 最大化從我用vim開始,就相信這世界上有些人比你自己還瞭解你自己想要什麼,所以喬老爺子才能做出讓世人尖叫的產品,所以我經常瀏覽高手的.vimrc檔案,我用了tmux不到3天就發現,它怎麼不能最大化當前pane?就像vim裡的ZommWinPlugin.vim外掛程式一樣,你按下某鍵,當前視窗就最大化了,獲得最大視覺化介面。當目前為止,就還沒有發現我有需求而別人沒有的,同樣,已有前人找到的解決辦法,方法如下:# zoom pane <-> window#http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/examples/tmux-zoom.shbind ^z run "tmux-zoom"##滾屏滾屏要進入copy-mode,即首碼+[,然後就可以用上下鍵來滾動螢幕,配置了vi快速鍵模式,就可以像操作vi一樣來滾動螢幕,非常的方便。退出直接按‘q’鍵即可。其他配置下面是從別人那裡摘錄過來的配置,反正我是用不著,留著以後參考吧,或許螢幕前的你有需要呢。## author   : Xu Xiaodong <[email protected]># modified : 2012 Jul 22##-- base settings --#set -g default-terminal "screen-256color"set -g display-time 3000set -g escape-time 0set -g history-limit 65535set -g base-index 1set -g pane-base-index 1#-- bindkeys --## prefix key (Ctrl+a)set -g prefix ^aunbind ^bbind a send-prefix# split windowunbind ‘"‘# vertical split (prefix -)bind - splitw -vunbind %bind | splitw -h # horizontal split (prefix |)# select panebind k selectp -U # above (prefix k)bind j selectp -D # below (prefix j)bind h selectp -L # left (prefix h)bind l selectp -R # right (prefix l)# resize panebind -r ^k resizep -U 10 # upward (prefix Ctrl+k)bind -r ^j resizep -D 10 # downward (prefix Ctrl+j)bind -r ^h resizep -L 10 # to the left (prefix Ctrl+h)bind -r ^l resizep -R 10 # to the right (prefix Ctrl+l)# swap pane# swap with the previous pane (prefix Ctrl+u)bind ^u swapp -U# swap with the next pane (prefix Ctrl+d)bind ^d swapp -D# misc# select the last pane (prefix e)bind e lastp# select the last window (prefix Ctrl+e)bind ^e last# kill pane (prefix q)bind q killp# kill window (prefix Ctrl+q)bind ^q killw# copy mode# enter copy mode (prefix Escape)bind Escape copy-mode# paste buffer (prefix Ctrl+p)bind ^p pasteb# select (v)bind -t vi-copy v begin-selection# copy (y)bind -t vi-copy y copy-selection# zoom pane <-> window#http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/examples/tmux-zoom.shbind ^z run "tmux-zoom"# app# htop (prefix !)bind ! splitw htop# man (prefix m)bind m command-prompt "splitw ‘exec man %%‘"# perl func (prefix @)bind @ command-prompt "splitw ‘exec perldoc -t -f %%‘"# perl var (prefix *)bind * command-prompt "splitw ‘exec perldoc -t -v %%‘"# perl doc (prefix %)bind % command-prompt "splitw ‘exec perldoc -t %%‘"# ruby doc (prefix /)bind / command-prompt "splitw ‘exec ri %%‘"# reload config (prefix r)bind r source ~/.tmux.conf \; display "Configuration reloaded!"#-- statusbar --#set -g status-utf8 onset -g status-interval 1set -g status-keys visetw -g mode-keys visetw -g automatic-rename off#-- colorscheme --##https://github.com/daethorian/conf-tmux/blob/master/colors/zenburn.conf# modessetw -g clock-mode-colour colour223setw -g mode-attr boldsetw -g mode-fg colour223setw -g mode-bg colour235# panesset -g pane-border-bg colour234set -g pane-border-fg colour234set -g pane-active-border-bg colour232set -g pane-active-border-fg colour232# statusbarset -g status-justify centreset -g status-bg colour235set -g status-fg colour248set -g status-attr dim#[default]? #[fg=colour187]#S #[default]? #[fg=colour187]w#I.p#P#[default]"set -g status-left "set -g status-left-attr brightset -g status-left-length 20#[fg=colour174]#(/home/xiaodong/bin/uptime) #[default]? #[fg=colour174]#(cut -d ‘ ‘ -f 1-3 /proc/loadavg)"set -g status-right "set -g status-right-attr brightset -g status-right-length 80setw -g window-status-current-fg colour223setw -g window-status-current-bg colour237setw -g window-status-current-attr boldsetw -g window-status-current-format "#I:#W#F"#setw -g window-status-alert-attr bold#setw -g window-status-alert-fg colour255#setw -g window-status-alert-bg colour160# messagesset -g message-attr boldset -g message-fg colour223set -g message-bg colour235set -g visual-activity on快速啟動tmux如果覺得每次都要開啟tmux,然後在開啟幾個視窗和面板很麻煩,那麼下面這個指令碼你一定會喜歡。參考這裡#!/bin/sh## name     : tmuxen, tmux environment made easy# author   : Xu Xiaodong [email protected]# license  : GPL# created  : 2012 Jul 01# modified : 2012 Jul 02#cmd=$(which tmux) # tmux pathsession=codefun   # session nameif [ -z $cmd ]; then  echo "You need to install tmux."  exit 1fi$cmd has -t $sessionif [ $? != 0 ]; then  $cmd new -d -n vim -s $session "vim"  $cmd splitw -v -p 20 -t $session "pry"  $cmd neww -n mutt -t $session "mutt"  $cmd neww -n irssi -t $session "irssi"  $cmd neww -n cmus -t $session "cmus"  $cmd neww -n zsh -t $session "zsh"  $cmd splitw -h -p 50 -t $session "zsh"  $cmd selectw -t $session:5fi$cmd att -t $sessionexit 0如果還有其他需要,可以去這裡看看,當然了,最全的參考文檔,就是man tmux。happy tmux!

tmux的使用方法和個人化配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.