1. 程式人生 > >tmux配置與使用

tmux配置與使用

適用場景

tmux是一個優秀的終端多路複用軟體,類似GNU Screen,但來自於OpenBSD,採用BSD授權。使用它最直觀的好處就是,通過一個終端登入遠端主機並執行tmux後,在其中可以開啟多個控制檯而無需再“浪費”多餘的終端來連線這臺遠端主機;當然其功能遠不止於此,比如分屏(當然其他一些軟體也能達到這個目的,比如vim,但我還是喜歡tmux的分屏)。

這裡寫圖片描述

配置檔案已經放到了 GitHub 上: tmux.conf

為什麼使用tmux:

tmux比screen有更多的功能,能夠保持工作環境的連續性。例如tmux解決如下的問題:

  1. 下班後,如果你需要斷開ssh或關閉電腦,你的ssh連線將丟失;

  2. 在公司或者實驗室開啟的ssh,在其他地方也需要訪問,比如宿舍或家裡;

  3. ssh可能由於一些原因中途意外斷開(比如長時間沒有操作)導致操作中斷;

安裝完成後輸入命令tmux即可開啟軟體,介面十分簡單,類似一個下方帶有狀態列的終端控制檯;但根據tmux的定義,在開啟了tmux伺服器後,會首先建立一個會話,而這個會話則會首先建立一個視窗,其中僅包含一個面板;也就是說,這裡看到的所謂終端控制檯應該稱作tmux的一個面板,雖然其使用方法與終端控制檯完全相同。

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

  • server伺服器。輸入tmux命令時就開啟了一個伺服器。

  • session會話。一個伺服器可以包含多個會話。

  • window視窗。一個會話可以包含多個視窗。

  • pane面板。一個視窗可以包含多個面板。

tmux

遠端主機連線

  • 一鍵啟動遠端主機上的 tmux:
    ssh -t [email protected] tmux

  • 如果你之前在遠端主機上已經開啟了 tmux 的話,用以下命令。

    遠端主機僅有一個tmux會話,直接進行重連:
    ssh -t [email protected] tmux a

    遠端主機有多個tmux會話,我們想要指定重新連線名為foo的tmux會話 ( ssh後面的-t為了執行任意一個基於screen的遠端主機上的程式,不可省略。tmux後面的-t-target

    的簡寫,旨在指定tmux的會話名):
    ssh -t [email protected] tmux a -t foo

注意事項

在不同大小的螢幕連線一個session可能會出現問題。比如在一個較小的桌面開啟一個session, 然後又在一個較大的桌面也開啟這個session. 則會發現在較大的桌面上, 也只會顯示和小桌面同樣大小的視窗, 其餘部分被密密麻麻的小點擴充.

tmux

解決方法之一是加入-d選項:
ssh -t [email protected] tmux a -d -t foo
即先強制 detach掉小桌面的session, 然後再在較大桌面開啟session.

另外, 或在配置檔案中設定:
setw -g aggressive-resize on

配置檔案

最全面的文件當然是官方的manual page, tmux.github.io.

如果在網上搜索的話你會發現大多的tmux配置檔案都是大同小異. 在我的配置檔案並沒有像大多配置一樣將tmux的字首鍵(類似emacs)的字首鍵重對映為Ctrl+a,而是選擇了預設設定Ctrl+b. 另外在顏色選擇上不同平臺下渲染的效果不一樣, 注意適應。

下面是我的配置檔案.

開始tmux

開始tmux使用。以下大部分內容均為預設設定, 如果在配置檔案修改了設定則以配置檔案為準。且在英文輸入狀態下進行。

commend explanation
tmux 啟動tmux會話
tmux new -s myname 建立一個名為myname的新的會話
tmux a / tmux at / tmux attach 如果當前僅有一個會話,重新連線該會話
tmux a -t myname 連線到指定會話myname
tmux ls 顯示所有會話
tmux kill-session -t myname 關閉指定會話myname

會話

以下的session(會話)、window(視窗)與pane(面板)命令中,PREFIX表示字首鍵, 即如果未重對映字首鍵的話,PREFIX表示Ctrl+b,然後再按後面的鍵。

會話命令加字首鍵。比如下面的s即指prefix+s,Ctrl+b+s. 分3步:

  1. 按下 Ctrl-b 鍵 (tmux 字首鍵)
  2. 放開 Ctrl-b
  3. 按下 s
commend explanation
:new<CR> New session
d (detach) 從一個會話中分離,讓該會話在後臺執行
$ 重新命名會話
s 顯示會話
( 切換到上一會話
) 切換到下一會話
L (Last) 切換到最後一個會話

視窗(標籤)

window, 視窗操作。加字首鍵。

commend explanation
c (create) 建立新視窗
w (window) 顯示視窗列表
f (find) 查詢視窗
, 重新命名視窗
& 關閉當前視窗,帶有確認提示
n (next) 切換到下一視窗
p (previous) 切換到上一視窗
l (last) 切換到最後一個使用的視窗

面板 (分割)

pane, 面板操作。加字首鍵。

commend explanation
% 垂直分割面板 (預設)
` `
" 水平分割面板 (預設)
- 水平分割面板 (配置修改後) In tmux.conf: bind-key split-window -h
o 在已開啟的面板間迴圈移動當前焦點
q 短暫顯示面板編號
x 關閉當前面板,帶有確認提示
z Toggle active pane between zoomed and unzoomed
+ Break pane into window (e.g. to select text by mouse to copy)
- Restore pane from window
Space 迴圈使用tmux的幾個預設面板佈局
Q Show pane numbers When the numbers show up type the key to go to that pane
{ 移動當前面板到左側
} 移動當前面板到右側

複製模式

按下 PREFIX-[ 即可進入複製模式. 然後使用方向鍵在螢幕上進行移動. 預設情況下只有方向鍵起作用. 不過我們可以在配置檔案中進入設定以vi的方式進行移動。 在.tmux.conf加入:
setw -g mode-keys vi
設定完以後, 我們就可以利用 h, j, k, and l 進行移動.

不過預設情況下,文字只能夠在同一個tmux會話中進行復制與貼上。為了能夠將文字貼上到任何地方,還需要告訴tmux複製到系統的貼上板。為此需要安裝reattach-to-user-namspace.

  1. 安裝reattach-to-user-namespace, 使用brew的話非常方便,一個命令即可:
    brew install reattach-to-user-namespace

  2. 設定.tmux.conf配置檔案

    
    # invoke reattach-to-user-namespace every time a new window/pane opens
    
    set-option -g default-command "reattach-to-user-namespace -l bash"

選取與複製文字

  1. 進入tmux的複製模式:prefix+[, 此時會看到右上角出現如下圖所示的標記:

tmux

  1. 以vim的方式在文字間進行移動。

  2. 移動到想要開始複製文字塊的地方,按下space鍵開始選中文字, 與vim的visual模式很像。

  3. 文字選擇完畢按下enter鍵退出複製模式。

此時如果你已經安裝了reattach-to-user-namespace, 那麼你可以在任何地方進行貼上。如果沒有,你可以在tmux的該會話中使用prefix+]進行貼上。

tmux

commend explanation
^ Back to indentation
Esc Clear selection
Enter Copy selection
j Cursor down
h Cursor left
l Cursor right
L Cursor to bottom line
M Cursor to middle line
H Cursor to top line
k Cursor up
d Delete entire line
D Delete to end of line
$ End of line
: Goto line
C-d Half page down
C-u Half page up
C-f Next page
w Next word
p Paste buffer
C-b Previous page
b Previous word
q Quit mode
C-Down / J Scroll down
C-Up / K Scroll up
n Search again
? Search backward
/ Search forward
0 Start of line
Space Start selection

相關推薦

tmux配置使用

適用場景 tmux是一個優秀的終端多路複用軟體,類似GNU Screen,但來自於OpenBSD,採用BSD授權。使用它最直觀的好處就是,通過一個終端登入遠端主機並執行tmux後,在其中可以開啟多個控制檯而無需再“浪費”多餘的終端來連線這臺遠端主機;當然其功能

Centos tmux 安裝 配置

tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory 

Linux - vim安裝 配置使用

格式 only ctx net height border term mona 方便 一 Vim 簡單介紹 曾經一直用vi,近期開始使用 vim,以下將兩者做一下比較。 vi和vim都是多模式編輯器,不同的是vim 是vi的升級版本號,它不僅兼容vi的全部指令,並且

Flask入門之SQLAlchemy配置數據庫連接

數據 rdo nsh imp log kref mod pre file 1. 安裝SQLAlchemy pip install flask-sqlalchemy 2. 導入和配置 from flask_sqlalchemy import SQLAlchemy bas

centos EMQTTD 集群安裝配置測試驗證

centos emqttd 集群安裝配置與測試驗證安裝包下載地址:http://emqtt.com/downloads在這裏我們下載 emqttd-centos6.8-v2.1.2.zip配置兩臺主機hosts192.168.0.10 s1.emqtt.io 192.168.0.20 s2.emqtt.i

【ADO.NET】1、簡單配置使用

字符串 文件中 .exe 增加 獲取字符串 pass 數據庫連接 rect manage 1、一些基礎的知識點 ExecuteReader(); //返回查詢到的數據,一次一行,用於 selectExecuteNonQuery(); //返回影響的行數,用於 delete,

nmap檢測ms17-010的配置使用方法

病毒 微軟 nmap 永恒之藍 ms17-010 1 前言針對近期肆虐全球的“永恒之藍”勒索蠕蟲病毒,為有效預防病毒的入侵,將被病毒入侵後的損失降到最低,各單位均采取了相關應急處置辦法,但沒有方法驗證處置辦法是否行之有效。很幸運的是,Paulino Calderon在https:

CentOS 6.x 本地yum源配置使用

mnt local 放置 cal nbsp 自動 all rpm-gpg 網絡 系統默認已經安裝了可使用yum的軟件包,所以可以直接配置: # mount /dev/cdrom /mnt 掛載鏡像,可以寫到配

UIAutomator環境配置運行

pla 引入 rms blog rop prop 目錄 orm java 環境配置,引入UTAutomator測試包 1.進入Eclipse,創建測試項目,例如Android/Java項目 2.右鍵點擊測試項目,選擇“Properties”---Java Build Pat

docker虛擬化安裝配置常用命令

sta 80端口 ubuntu map 虛擬化 導出 6.5 關系 版本 一、Docker安裝配置 docker只有在centos6.5以上機器才能使用yum直接安裝,如果其他版本需要安裝centos擴展源epel。 docker官方文檔說要求Linux kernel至

solr的安裝配置helloworld

配置中文 啟動tomcat com war包 執行 package .text 文件 rdo 一、安裝solr 1.安裝jdk環境和tomcat 2.解壓solr壓縮包,這裏我解壓到opt目錄下 3.把/usr/local/solr-4.8.0/dist/solr-4.8.

CxImage 簡單配置使用

選項 ghost reel sage header ctu 也會 wim 才會 CxImage 簡單配置與使用 如果本篇文章還不能解決你在生成解決方案以及便宜過程中的問題 請參閱: http://blog.csdn.net/afterwards_/article/det

網絡硬件設備配置管理(CCNA)下

網絡 硬件 cisco ccna 點擊下載:網絡硬件設備配置與管理(CCNA)下本文出自 “飛奔的魚兒” 博客,請務必保留此出處http://feiyuer.blog.51cto.com/6967044/1931155網絡硬件設備配置與管理(CCNA)下

webpack漸入佳境系列一:webpack環境配置打包基礎【附帶各種 "坑" 解決方案!持續更新中...】

utf 環境配置 lan 配置 要求 完全 需要 構建 樣式 首先介紹傳統模塊化開發的主流方案: 1.基與CMD的sea.js,玉伯提出的解決方案,據說原來京東團隊在使用。用時才定義,就近加載。最近在瀏覽seajs官方文檔時發現seajs的域名已經在轉賣,驚恐萬分之余又想

jira安裝配置服務腳本

jira安裝部署 jira服務腳本 jira授權一、安裝說明系統:CentOS 6.7 x64 export LANG="zh_CN.UTF-8" # 否則中文無法顯示,還是英文安裝java 1.7.x版本jdk安裝mysql 5.1及以上版本二、數據庫配置創建mysql:>>crea

[轉]Jetson TX1 開發教程(1)配置刷機

uda 密碼 隨著 賬號 自己 一個 路由器 b- 出廠 開箱 Jetson TX1是英偉達公司新出的GPU開發板,擁有世界上先進的嵌入式視覺計算系統,提供高性能、新技術和極佳的開發平臺。在進行配置和刷機工作之前,先來一張全家福: 可以看到,Jetson TX1 包含內容

【SonarQube】安裝、配置使用 01

ges 工具 順序 64位系統 runner lba 問題 分析 clas SonarQube是管理代碼質量一個開放平臺,可以快速的定位代碼中潛在的或者明顯的錯誤,下面將會介紹一下這個工具的安裝、配置以及使用。 準備工作; 1、jdk(不再介紹) 2、sonarqube:h

plsql數據庫配置使用

lac 用戶名 bold mes ntc 打開 color oracle 多個 數據庫配置方法二(不安裝Oracle,使用instantclient工具配置連接oracle) instant client 是連接oracle的即時安裝工具。 配置instant clie

Druid監控頁面配置使用

method mil 使用 blog troy ict 密碼 一次 div 一、Maven中添加Durid連接池依賴 <!-- druid連接池 --> <dependency> <groupId>com.alibaba<

Redis中取得所有Key、過期時間配置獲取、Key過期通知。

ive exceptio config lee var url multipl -c class string connection = "127.0.0.1:6379,password=xxxxx,connectRetry=5"; [TestM