本文將介紹如何在tmux窗口管理環境下,不依賴鼠標只經過鍵盤完成一些經常使用操做linux
前言程序員
終端(Terminal)不管是程序員仍是運維都是Linux平臺工做者不可避免的工做環境。如何利用一些神奇的技巧來提升終端的操做效率,無疑會幫助咱們省下更多的時間來用於思考。本文將會介紹一些基於tmux終端窗口管理環境下的一些奇巧淫技,來幫助你們徹底脫離鼠標工做。若是你尚未據說過tmux或者用過tmux的話,花5分鐘時間跟着博主上一篇入門文章瞭解安裝下tmux你會發現本身的終端也能夠像電影裏拍的那麼炫。vim
複製黏貼運維
不得不認可不管是開發仍是運維,最經常使用的一個操做之一就是Ctrl+v和Ctrl+c。在終端下也不可避免的有這樣的使用場景:編輯器
程序運行後打印出了一個Exception,想快速的用grep在代碼目錄中搜索下這個exception看看是哪裏引發的spa
程序打印出了一大段日誌,想發給同事看下結果等等操作系統
這些狀況下想必你們的第一反應是拿起鼠標,選中之後用快捷鍵複製黏貼,而後手再放回鍵盤。稍微高效些的做法是配置終端選中後自動複製,免去了一次Ctrl+c的操做。可是手臂的運動永遠比手指運動要低效,用鼠標選中複製的方法顯然不夠Hack。何況tmux下,想要選中單個Pane中的文字也是很是蛋疼的。由於不是原生窗體,因此鼠標點擊的選中是會橫向跨越窗體的(見下圖粉色部分)。(注:固然你能夠用摁住⌘+alt再用鼠標複製,壞處就是你須要手動刪除換行先後的空格)。.net
copy_crap日誌
好在tmux的一個重要特性就是支持把整個窗體視做是一個編輯器。換句話說,tmux能夠把以前的全部輸出都當作是一個文本文檔進行選擇。再換句話說tmux能夠進入一種和vim的Visual模式同樣操做體驗的字符選擇模式。若是你的tmux是和博主上一篇入門文章中同樣的配置話,無需額外操做就能夠進行如下操做。若是沒有進行過個性化配置的話,須要將如下部分加到~/.tmux.conf中。視頻
set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
配置完了vi-mode之後,咱們就能夠經過如下方式進行選擇複製黏貼:
CTRL+b + [的方式進入選擇模式。
而後點擊v鍵進入vi-mode選擇模式。
VIM的移動命令進行選擇。也可使用CTRL+b + :list-keys -t vi-copy查看快捷鍵列表
選擇完畢後用y複製到tmux剪貼板。或者ESC退出選擇
最後經過CTRL+b而後]複製到光標所在位置。
更快的快捷鍵 – 省去prefix
瞭解screen或者tmux的讀者都知道,要進入這二者的操做模式都須要先使用prefix觸發。在screen中是CTRL+a在tmux中是CTRL+b。這也就覺得着我若是要新建一個窗體就要CTRL+b + c 至關於兩次鍵盤操做才能完成。而一些操做系統原生窗體軟件,例如ITerm2就只須要⌘+n一次鍵盤操做就能完成。相比之下tmux就顯得低效不少。這時有些讀者就說了,iTerm2 深度tmux集成啊,你爲何不用。我不用的理由有如下幾個:
經過-CC觸發的iTerm2內置tmux時,會額外fork出一個窗口。(即便能夠配置自動隱藏,也是很是惱人的)
iTerm2內置tmux沒法作窗體命名
iTerm2和tmux相關的快捷鍵沒法自定義
綜合之下博主決定用其餘方式解決tmux快捷鍵繁瑣的問題。此時,我發現iTerm2容許把快捷鍵映射成Hex Code傳輸給窗體。而tmux的那些快捷鍵無非就是一串Hex Code的結合。經過查閱 ASCII和鍵盤對應表 咱們發現CTRL b對應的Hex Code是0x02,以後的配置就顯得很是簡單了。下面是個人一些快捷鍵配置清單和截圖:
tmux快捷鍵 映射後快捷鍵 Hex Code 功能
CTRL+B l +l 0x02 0x6C 選擇右面窗體
CTRL+B k +k 0x02 0x6B 選擇上方窗體
CTRL+B j +j 0x02 0x6A 選擇下方窗體
CTRL+B h +h 0x02 0x68 選擇左面窗體
CTRL+B L +L 0x02 0x4C 向右增大窗體大小
CTRL+B H +H 0x02 0x48 向右增大窗體大小
因爲快捷鍵較多,且你們的tmux配置都不同這裏就不一一列舉。讀者能夠經過查閱ascii十六進制轉換表自行配置。
其餘高效Tips
除了純鍵盤操做和更精簡的快捷鍵以外,tmux還有不少黑魔法可以提高平常操做的工做效率。你們能夠深刻研究。
免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/
學PHP、Linux、HTML五、UI、Android等視頻教程(課件+筆記+視頻)!聯繫Q2430675018