# tmux
tmux是指通過一個終端登錄遠程主機并運行后,在其中可以開啟多個控制臺而的終端復用軟件。使用了tmux,你就可以在一個終端中同時運行多個會話,只需開啟一個終端。
### 為什么使用tmux
如果只是分隔屏幕,配色的變化,其實客戶端item2以及screen就已經很好了。那我們為什么要使用tmux呢?
為什么使用tmux:
- 保持會話: 斷開ssh或關閉電腦,你的ssh可以重新連接,能夠保持你的工作環境連續性。前提實在服務器端裝上tumx
使用tmux會話的分離與連接就可以輕松解決以上問題,分離(detach)可以使終端會話在后臺運行,連接(attach)可以重新打開在后臺運行的會話,也可以多個終端連接同一會話。
### 安裝
### Mac
`brew install tmux`即可
### Linux
`yum install tmux`類似命令即可
### Windows
Windows下可以使用cygwin來安裝 cygwin,cygwin是圖形安裝界面,請確保在 Select Packages 界面出現時,選中 tmux 即可。
### tmux的基本概念
啟動之后,可以看到命令行最底部多了一條綠色的狀態條,上面顯示了一些信息,比如計算機名和時間等。
### Session(會話)
一組窗口的集合,通常用來概括同一個任務。session可以有自己的名字便于任務之間的切換。
### Window(窗口)
單個可見窗口。Windows有自己的編號,也可以認為和ITerm2中的Tab類似。
當你新建一個會話的時候,tmux 已經自動給你在新會話中自動創建了一個窗口(Window),窗口的編號從`0`開始,名稱則默認為當前工作目錄或者當前運行的程序,都顯示在下方的狀態條中。如下圖所示,我將工作目錄切換到了`~/Documents`,窗口`0`的名稱也隨之變換。
### Pane(窗格)
tmux 下可以有多個會話,會話下又可以有多個窗口,那么同樣,窗口下還可以有多個窗格, 一個窗口可以切分成多個窗格,主要的切分方法有兩種,垂直切分和水平切分。
### tmux的基本操作
前置操作(`Prefix-Command`),所有下面介紹的快捷鍵,都必須以前置操作開始。tmux默認的前置操作是`CTRL+b`。
### 會話相關
- 新建會話(create): `tmux new-session -s <會話名稱>` or `tmux new -s <會話名稱>`
- 分離會話(detach): `prefix d`,退出tmux但是不關閉掉進程,方便下次進入
- 連接會話(attach): `tmux attach -t <目標會話名>` or `tmux a -t <目標會話名>`, 被分離的會話,還可以重新連接上
- `tmux ls`: 列出所有的會話
- `prefix $`: 重命名當前會話
### 窗口相關
- `tmux new -n <窗口名>`: 創建會話的時候附上 `-n` 參數,來給窗口制定一個名稱
- 新建窗口: `prefix c`
- 上一個窗口(previous): `prefix p`
- 下一個窗口(next): `prefix n`
- 切換到上一個活動的窗口: `prefix space`
- 使用窗口號切換: `prefix 窗口號`
- 窗口列表: `prefix w`
- 關閉一個窗口: `prefix &`
- 更改窗口名稱: `prefix ,`
### 窗格相關
- 查看所有窗格的編號: `prefix q`
- 垂直切分(把窗口垂直切分成左右兩等分):`prefix %`
- 水平切分(把窗口水平切分成上下兩等分):`prefix "`
- 窗格切換: `prefix o`
- 按制定方向切換窗格: `prefix 方向鍵`
- 更改窗格布局: `prefix 空格`, 可以在這五個默認的窗格布局之中輪流切換:
- 水平平分(even-horizontal)
- 垂直平分(even-vertical)
- 主窗格最大化,其他窗格水平平分(main-horizontal)
- 主窗格最大化,其他窗格垂直平分(main-vertical)
- 平鋪,窗格均等分(tiled)
### 參考資料
- [Tmux - Linux從業者必備利器](http://cenalulu.github.io/linux/tmux/)
- [圖靈: tmux入門](http://www.ituring.com.cn/minibook/10707)
- 介紹
- 程序員基礎知識
- 字符編碼
- 技術名詞
- 語義化版本
- 命名規范
- 書寫文檔
- 開源協議
- 目錄結構
- 正則表達式
- 平凡之路
- 數據結構與算法
- 堆和棧
- 浮點數類型
- XML和JSON
- 算法學習之路
- 排序算法
- 代碼架構
- 設計模式
- 常用的Javascript設計模式
- 面向對象編程
- 繼承
- 多態
- 封裝
- 面向接口編程
- 代碼評審
- 六種量化你代碼的方式
- 程序員必備的代碼審查(Code Review)清單
- 服務器部署
- AWS簡介
- 網絡知識
- HTTPS, SPDY和 HTTP/2性能的簡單對比
- HTTP狀態碼
- 懂點設計
- 佳作賞析
- 無縫平鋪
- Sketch學習
- 設計與實現的平衡
- 寫點東西
- 使用gitbook
- 合格的PM
- 一個好的產品經理
- 產品經理的技能
- 團隊合作
- 關于招聘
- 培訓新人
- 領導能力
- 獲取知識
- MOOC
- Podcasts
- 英語學習
- 設計學習
- 前端學習
- iOS學習
- 游戲開發
- 關注健康
- 過勞檢測
- 關于睡眠
- 提升效率
- 學會閱讀
- 學會提問
- 善用搜索
- 學會寫作
- 時間管理
- 知識管理
- 文件管理
- 密碼管理
- 制作視頻
- 制作PPT
- 論音樂對效率的影響
- 程序員效率指南
- SOHO
- 創業資源
- Hacker
- 保護隱私
- 關于工作
- 找工作前需要思考的問題
- 原則與技巧
- 關于簡歷
- 其他方面
- 硬件相關
- 常用軟件
- Windows
- 硬件配置
- 系統安裝
- 常用軟件
- Mac
- 通用設置
- 權限問題
- alias設置
- 常用軟件
- 開發環境
- 快捷鍵設置
- 常用終端命令
- dotfiles
- Android
- 常用軟件
- 如何登錄美國區GooglePlay
- 開發工具
- git
- EditorConfig
- node
- shadowsocks
- ST3--Windows篇
- ST3--Mac篇
- gulp
- 字體的選擇
- Emacs
- WebStorm
- tmux
- Sketch
- Sketch中文學習資料
- Trello
- 使用Trello管理項目的經驗
- git進階
- 15分鐘學會使用Git和遠程代碼庫
- GitHub秘籍
- JetBrains
- IDE設置
- 附錄
- 計算機科學與技術
- 網站
- 書籍
- 工具