轉自 http://11ten.gitcafe.io/book-a/iTerm2/index.htmlhtml
iTerm2的主要特色:python
⌘ + 數字
: 切換標籤頁。 ⌘ + 方向鍵
按方向切換標籤頁。⌘ + enter
: 切換全屏⌘ + f
: 查找。支持正則。其中查找的內容會被自動複製。省去了再去⌘+c的步驟。一樣,鼠標去選中的內容也會自動複製,也能夠鼠標中鍵直接粘貼。通常在使用時,鍵入搜索關鍵詞,而後用shift-tab
或者tab
左右自動補全,option + enter
則自動將搜索結果鍵入,而且複製到剪貼板。⌘ + d
: 垂直分屏,⌘ + shift + d
: 水平分屏。使用⌘ + ]
和⌘ + [
在最近使用的分屏直接切換.而⌘ + opt + 方向鍵
切換到指定位置的分屏。⌘ + t
:新的標籤頁⌘ + w
:關閉當前標籤頁⌘ + ;
:自動補全歷史命令。如圖:自動補全⌘ + shift + h
: 剪貼板歷史,如圖:剪貼板歷史ctrl + u
: 清空當前行。這裏要注意,mac默認的ctrl+u爲清楚當前光標至行首的內容,在iTerm2中則直接清除本行。iTerm2 也支持其餘經常使用的操做命令,這裏順帶講下,由於這些命令都是mac下很是經常使用也很好用的:ctrl + a
: 到行首linux
ctrl + e
: 行末ctrl + f/b
: 前進後退,至關於左右方向鍵,可是顯然比移開手按方向鍵更快ctrl + p
: 上一條命令,至關於方向鍵上ctrl + r
: 搜索命令歷史,這個你們都應該很熟悉了ctrl + d
: 刪除當前字符ctrl + h
: 刪除以前的字符ctrl + w
: 刪除光標前的單詞ctrl + k
: 刪除到文本末尾ctrl + t
: 交換光標處文本⌘ + —/+/0
: 調整字體大小⌘ + r
:清屏,實際上是滾到新的一屏,並無清空。ctrl + l 也能夠作到。⌘ + opt + e
打開Exposé,並支持搜索。如圖:Exposé⌘ + /
: 找到當前光標位置,有時會頗有用。shift + ⌘ + s
: 保存當前窗口快照。⌘ + opt + b
: 快照回放。頗有意思的功能,你能夠對你的操做根據時間軸進行回放。能夠拖動下方的時間軸,也能夠按左右方向鍵。如圖:快照回放zsh做爲bash的替代品,天然不少人要問:why zsh? 在Zsh Workshop 有個長長的功能列表,用來回答這個問題。這裏講下我選擇zsh的緣由,固然,也是介紹zsh強大的功能。git
更強大的補全。github
<ctrl-n/p/f/b>
來選擇,perfect!tar - <tab>
就會列出全部的選項和幫助說明。用了zsh以後man
少用了好多……kill <tab>
就會列出全部的進程名和對應的進程號。如圖:這還不夠,試試鍵入kill sbin <tab>
,如圖所示:shell
<ctrl-p>
或者方向上鍵
查找歷史命令時,zsh支持限制查找。好比,輸入ls
而後再按方向上鍵,則只會查找用過的ls命令。而此時使用<ctrl-p>
則會仍然按以前的方式查找,忽略ls
。cd
。首先你甚至不須要再輸入cd了,直接輸入路徑便可。第二,在你知道路徑的狀況下,好比/usr/local/bin
你能夠輸入cd /u/l/b
而後按<Tab>
進行補全快速輸入。這顯然不夠,zsh還支持路徑替換,若是你其實想進入的是/usr/local/bin
,再也不須要../
了,直接在當前輸入cd bin share
便可,則bin
會替換爲share
。在以後我會介紹z和autojumper,目錄跳轉會更方便。alias ls ='ls --color=auto'
。zsh還支持後綴alias,即以什麼命令打開特定的後綴名文件。例如alias -s js=mvim
,輸入hello.js
,會以vim打開該文件,而不在須要vim hello.js
。man
命令,而這個功能讓我少用了不少find
命令。 通常的通配符搜索無非是ls -l *.log
,如圖:在zsh中能夠作到遞歸的通配符搜索。使用**/
來遞歸搜索,如圖django
find
?以上都是我感受遷移到zsh以後很是實用的功能。要想從頭開始瞭解和學習zsh,能夠訪問A User’s Guide to the Z-Shell。不過你們都很忙,從頭開始本身學習和配置會很累。因此如今說到zsh,不得不提的就是oh-my-zsh,oh-my-zsh是一個開源的zsh配置管理框架,提供了大量實用的功能,主題等。如今基本都是標配了吧。如圖是我在用的默認zsh主題robbyrussell
,如圖vim
能夠發它能自動顯示當前所在的git分支以及當前本地狀態(黃色的小叉表示本地有更新未提交)。windows
固然zsh也不是天衣無縫。在我使用過程當中有兩點不是很舒服: 1. 自動糾正並不老是那麼智能。如圖:瀏覽器
可是能夠對這些命令使用alias 加上nocorrect
前綴,如:
alias rake deploy='nocorrect rake deploy'
下面講下zsh和oh-my-zsh的安裝。
使用brew來安裝zsh
brew install zsh
設置zsh爲默認
在/etc/shells
文件末尾添加
/usr/local/bin/zsh
執行:
chsh -s /usr/local/bin/zsh
最後記得將~/.bash_prorile
或者~/.profile
等配置拷貝到~/.zshrc中。
安裝oh-my-zsh
自動安裝:
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
能夠選擇本身喜歡的主題。只須要修改~/.zshrc
文件中的ZSH_THEME
便可。
z和autojump的功能相似,前者是簡單的shell腳本實現,後者由python實現,功能都是能夠方便自動匹配到你最多使用的目錄並跳轉。我在用的是z,如圖
,我在根目錄輸入z github
能夠自動跳轉到我經常使用的notice501.github.com
這個目錄,也就是本博客的工程目錄。超級方便的工具。autojump用法相似,命令爲j
而不是z
二者的安裝方式:
z
git clone git@github.com:rupa/z.git
然後將z.sh放入環境變量便可。
autojump
autojump能夠直接使用brew安裝
brew install autojump
tmux 是什麼?咱們先來看看官網的解釋:
tmux is a terminal multiplexer
What is a terminal multiplexer? It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more.
簡單來講就是一個終端多開工具,能讓你同時運行多個終端會話,在這些會話之間隨意切換。
日常在終端的使用過程當中,一次只能運行一個會話。 固然你也能夠經過終端程序的多開標籤頁來解決,可是使用了tmux,你就能夠在一個終端中同時運行多個會話,只需開啓一個終端。終端會話多開
咱們在使用終端的過程當中,總會遇到過相似場景:
使用tmux會話的分離與鏈接就能夠輕鬆解決以上問題,分離(detach)可使終端會話在後臺運行,鏈接(attach)能夠從新打開在後臺運行的會話,也能夠多個終端鏈接同一會話。這些都會在後續詳細描述。
tmux是什麼 http://t.cn/Rv6DnPb 日常在終端的使用過程當中,一次只能運行一個會話。 固然你也能夠經過終端程序的多開標籤頁來解決,可是使用了tmux,你就能夠在一個終端中同時運行多個會話,只需開啓一個終端。
tmux 的安裝比較簡單,如下分別介紹 linux、Mac、FreeBSD、Windows系統下的安裝方法
linux 用戶只要使用系統自帶的包管理器來安裝就好了
$ sudo apt-get install tmux
$ sudo yum install tmux
$ pacman -S tmux
Mac 用戶能夠經過 Homebrew 或 Macports 來進行安裝
$ brew install tmux
$ sudo port install tmux
FreeBSD可使用自帶的port進行安裝
$ cd /usr/ports/sysutil/tmux $ make install clean
Windows下可使用 cygwin 來安裝 cygwin,cygwin是圖形安裝界面,請確保在 Select Packages 界面出現時,選中 tmux 便可。
最後,爲了確保 tmux 正確安裝,能夠在命令行裏輸入如下命令,來查看 tmux 的版本號
$ tmux -V
注意是大寫的V
若是出現相似如下字符串,就已經安裝成功了
tmux 1.8
目前最新版本爲 1.9a,隨後的章節將使用 1.8 版本作解說,請確保你安裝的 tmux 版本要在 1.8 或以上,以避免缺乏某些必要的功能。
上一節咱們已經將 tmux 安裝好了,如今就能夠經過如下命令來啓動它:
$ tmux
啓動以後,能夠看到命令行最底部多了一條綠色的狀態條,上面顯示了一些信息,好比計算機名和時間等。 要退出 tmux,能夠輸入exit
回車或者按下組合鍵 [Ctrl+d]
。
其實剛纔咱們啓動 tmux 以後,它已經自動建立了一個會話(Session),會話是 tmux 的最主要的功能,接下來咱們將介紹會話的一些功能。
啓動 tmux 會自動建立會話,但並無爲會話命名。爲了之後使用方便,咱們來建立一個本身命名的會話,命令以下:
$ tmux new-session -s <會話名稱>
如今咱們來建立一個會話,取名爲 dev
,命令爲:
$ tmux new-session -s dev
建立完成以後,能夠看到底部狀態條左邊標示出了當前的會話名爲 dev
。
這個命令還有一個縮寫版本, new-session
縮寫成 new
,也就是上述命令能夠簡寫成:
$ tmux new -s dev
新建會話還能夠帶上一個初始命令:
$ tmux new -s <會話名稱> 初始命令
好比建立一個名爲 monitor 的會話,初始命令爲 top :
$ tmux new -s monitor top
能夠看到會話建立後,會自動運行 top 命令。可是一旦退出 top 程序 (按 [q]
),會話也會自動退出,因此在實際應用中,初始命令幾乎不會用到。
以前已經說過,退出 tmux 可使用 exit
命令或者 [Ctrl+d]
組合鍵,退出 tmux 會把會話結束掉,就像日常關閉終端程序同樣。可是在實際應用中,可能你並不但願這樣,由於有些程序是要保持運行的,例如 rails 的測試服務、telnet鏈接遠程服務器等等。
這時候分離會話就能夠派上用場了,分離後的會話並不會把運行中的程序結束掉,而是會保持運行,你還能夠稍後從新鏈接上這些會話。
分離會話以前,咱們先來啓動一個須要保持運行的程序,這裏用 python 2.x 的 SimpleHTTPServer 爲例, 固然你也能夠選擇啓動 rails 或 django 的測試服務、telnet 鏈接或者更簡單的 top 命令。
先在以前建立的會話中運行一下命令來啓動一個簡單的 HTTP 服務:
$ python -m SimpleHTTPServer Serving HTTP on 0.0.0.0 port 8000 ...
這時候 HTTP 服務已經運行起來了,接下來就要作分離會話的操做了,快捷鍵是:
[Ctrl+b]
[d]
也就是先按下組合鍵 [Ctrl+b]
而後再接着按 [d]
。d 表明了 detach,而 [Ctrl+b]
是一個命令前綴(官方稱之爲 prefix),這個命令前綴是告訴終端程序,接下來的命令是針對 tmux 使用的。在以後的描述中,都將採用 [前綴]
來代替 tmux 的命令前綴。
能夠看到,在按下快捷鍵以後,tmux 已經退出並回到日常的終端中,並帶着 [detached] 字樣的提示。
這時候能夠在瀏覽器訪問一下剛纔啓動的 HTTP 服務 http://localhost:8000,確實能夠正常訪問,證實剛纔的程序還在保持運行中,並無被結束,甚至你還能夠把整個終端程序關閉。
可能有人會很不習慣這個默認的命令前綴,包括我本身在內,由於 [Ctrl+b]
是一個 Emacs 或 Vim 的快捷鍵,甚至是命令行自己的快捷鍵。在 Emacs 或者命令行中,它是後退一個字符的操做;而在 Vim 中,它是一個向上翻頁的操做。不過不用擔憂,先忍耐忍耐,稍後的章節將講述如何配置 tmux,那時就能夠擺脫快捷鍵衝突的困擾了。
被分離的會話,還能夠從新鏈接上,就讓咱們來實踐一下,命令爲:
$ tmux attach-session -t <目標會話名>
簡寫爲
$ tmux attach -t <目標會話名>
或
$ tmux a -t <目標會話名>
以前咱們建立的會話名叫 dev ,因此命令就能夠這樣寫:
$ tmux a -t dev
由於咱們只建立了一個會話,因此能夠忽略 -t 的參數,直接寫成:
$ tmux a
若是不指定目標會話名,tmux 將會鏈接你上次使用的會話。鏈接上 dev 會話以後,能夠看到程序還在運行中,並且終端裏顯示的內容跟會話分離前沒什麼兩樣,只是多了幾行 HTTP 請求的日誌。
這時候,你還能夠在多個終端,甚至是多臺電腦經過 ssh 鏈接上同一個會話,能夠實現共同操做,很是強大,具體的感覺能夠本身體會。
接下來咱們多建立幾個 tmux 會話,在這以前先把當前會話分離掉:
[前綴]
d
$ tmux new -s edit
[前綴]
d
$ tmux new -s telnet
[前綴]
d
如今,會話已經足夠多了,接下來登場的就是列出全部會話的命令:
$ tmux list-sessions
能夠簡寫成
$ tmux ls
屏幕上將會顯示出全部建立的會話,好比:
dev: 1 windows (created Tue Jun 10 15:10:32 2014) [80x24] edit: 1 windows (created Tue Jun 10 16:26:20 2014) [80x24] telnet: 1 windows (created Tue Jun 10 16:26:53 2014) [80x24]
這時候鏈接會話的 -t 參數就派上用場了,你能夠選擇鏈接到哪個會話。
若是沒有建立會話或者會話都全已退出,那麼列出全部會話的命令將會提示一個 failed to connect to server 的信息,能夠看得出來 tmux 是有運行一個服務的,這個服務管理着全部的會話,並讓他們持續運行。
經過建立多會話,以及分離/鏈接的功能,還能實現多終端鏈接同一會話,已經徹底能夠輕鬆應付許多日常很以實現的功能。在下一章節中,咱們將討論 tmux 裏窗口(Window)的功能。
上一章節介紹了 tmux 的會話,接下來就要講到 tmux 中窗口的使用。
其實當你新建一個會話的時候,tmux 已經自動給你在新會話中自動建立了一個窗口(Window),窗口的編號從0開始,名稱則默認爲 當前工做目錄 或者 當前運行的程序 ,都顯示在下方的狀態條中。以下圖所示,我將工做目錄切換到了 ~/Documents
,窗口0的名稱也隨之變換。
咱們也能夠在建立會話的時候附上 -n
參數,來給窗口制定一個名稱
$ tmux new -n <窗口名>
-n
參數能夠和以前介紹過的 -s
參數一同使用,如今咱們來建立一個名爲 demo的新會話,新建窗口取名爲worldcup 吧。
$ tmux new -s demo -n worldcup
[注意] 裝了 oh-my-zsh 的話,自定義窗口名不起做用,不管如何設置或更改窗口名,敲入命令以後窗口名都會變成當前工做目錄或者當前運行的程序,但願新版本能修復這個問題
新建窗口比較簡單,只要執行如下組合鍵便可。
[前綴]
c
c 表明了 create ,一個會話能夠建立多個窗口,可是爲了窗口之間切換的方便,建議將窗口個數保持在個位數。
切換窗口有好幾種方式,咱們先來講說最經常使用的兩種。
上一個窗口(previous): [前綴]
p
下一個窗口(next): [前綴]
n
使用這兩種方式,就能夠在全部窗口中按順序切換。若是在第一個窗口執行上一個窗口的操做,則會跳轉到最後一個窗口,一樣的在最後一個窗口執行下一個窗口的操做,則會跳到第一個。
固然每一個窗口都有一個編號,你也能夠經過如下簡單的操做,來跳轉到制定編號的窗口。
跳轉到指定窗口: [前綴]
0-9的數字
因爲這個指令只能在 0-9 號的窗口之間跳轉,因此建議窗口個數保持在個位數。
可是若是窗口個數實在太多,還能夠用如下方法來呼出窗口列表,用上下鍵就能夠進行選擇,而後回車。
窗口列表: [前綴]
w
更改窗口名稱也比較簡單,首先要先切換到須要修改的窗口下,執行如下操做,就能夠進行修改了。
更改窗口名稱: [前綴]
,
這時,底部的狀態條會變成黃色,只要輸入想要取的名字,回車便可。
當窗口再也不須要時,也能夠進行關閉,如下是操做指令。
關閉窗口: [前綴]
&
這個命令確實不太好用,還要用到 Shift
鍵,可是彆着急,講到自定義配置的時候,就能夠對默認的組合鍵進行更改了。關閉窗口以前,狀態條也會有黃色的確認提示,輸入 y
確認或者 n
取消。
當會話中全部的窗口都關閉以後,會話也會隨着退出。
本章講述了 tmux 中如何使用窗口,窗口是會話的子元素,固然窗口還能再分,也就是下一章講述的面板。
上一章已經介紹了 tmux 裏的窗口,窗口也能夠再分,也就是接下來要說的窗格(pane)。咱們已經知道,tmux 下能夠有多個會話,會話下又能夠有多個窗口,那麼一樣,窗口下還能夠有多個窗格,其結構以下。
tmux ├── 會話a │ ├── 窗口a │ │ ├── 窗格a │ │ └── 窗格b │ └── 窗口b │ └── 窗格c └── 會話b ├── 窗口c │ └── 窗格d └── 窗口d └── 窗格e
一個窗口能夠切分紅多個窗格,主要的切分方法有兩種,垂直切分和水平切分。
垂直切分(把窗口垂直切分紅左右兩等分): [前綴]
%
垂直切分
水平切分(把窗口水平切分紅上下兩等分): [前綴]
"
水平切分
以上兩種切分方法還能夠混合使用,好比先進行水平切分再進行垂直切分,咱們會獲得相似如下的3個窗格。
把窗口切分紅多個窗格之後,就須要在各個窗格直接進行切換,以便對不一樣的窗格進行不一樣的操做。
窗格切換: [前綴]
o
這個指令會在當前窗口的全部窗格中輪流切換,若是窗格比較少的狀況下,很是實用。可是若是窗格太多,就比較麻煩了,能夠用如下指令來制定切換的方向,本身體會一下吧。
按制定方向切換窗格: [前綴]
方向鍵
tmux 有五個默認的窗格佈局,能夠知足基本的工做須要。
如下操做指令,能夠在這五個默認的窗格佈局之中輪流切換。
更換窗格佈局: [前綴]
空格
到本章爲止,tmux 最基本的操做已經講述完,在接下來的章節中,要給你們介紹一下 tmux 的命令(command)