1. 程式人生 > >linux 工具——終端分屏與vim分屏

linux 工具——終端分屏與vim分屏

preface:不知不覺在終端下學習幹活一年多,終端開多了成了習慣,之前嫌麻煩沒用分屏,而當真正用起來比想象中的簡單,終端下的分屏命令
tmux及vim自帶分屏命令vsp都相當不錯,加快乾活效率。

1、終端分屏tmux

功能:
提供了強勁的、易於使用的命令列介面。
可橫向和縱向分割視窗。
窗格可以自由移動和調整大小,或直接利用四個預設佈局之一。
支援 UTF-8 編碼及 256 色終端。
可在多個緩衝區進行復制和貼上。
可通過互動式選單來選擇視窗、會話及客戶端。
支援跨視窗搜尋。
支援自動及手動鎖定視窗。

基本使用及快捷鍵
安裝簡單:sudo apt-get install tmux
使用只需記住幾個常用快捷鍵。
tmux所有自帶命令都預設需要先按Ctrb+b,然後再鍵入對應的命令。
Ctrl+b原意為send-prefix,即傳送字首訊號。以下簡寫C-btmux   # 執行 tmux -2 以256終端執行,exit命令退出
C-b d  # 返回主 shell , tmux 依舊在後臺執行,裡面的命令也保持執行狀態
tmux ls # 顯示已有tmux會話(C-b s)
tmux attach-session -t 數字 # 選擇tmux
tmux new-session -s session-name
tmux kill-session -t session-nameman tmux//顯示
C-b ?  // 顯示快捷鍵幫助,退出按q
C-b  "  // 模向分隔視窗
C-b % // 縱向分隔視窗
C-b 方向鍵//在各視窗間切換(注意與下一個命令的區別)
C-b C-方向鍵 //調整分隔視窗大小,不要鬆開CtrlC-b c//create, 生成一個新的視窗
C-b n//next,移動到下一個視窗
C-b p//previous,移動到前一個視窗
C-b l//last,移動到最後使用的視窗
C-b C-o  //調換視窗位置,當前視窗和上一個視窗互換。
C-b o // 跳到下一個分隔視窗
C-b 0~9 //選擇幾號視窗C-b q // 顯示分隔視窗的編號
C-b w // 以選單方式顯示及選擇視窗
C-b s // 以選單方式顯示和選擇會話C-b t //顯示時鐘
C-b & // 確認後退出 tmux
C-b ! // 把當前視窗變為新視窗
C-b 空格鍵  //採用下一個內建佈局
C-b [ 複製(空格開始)
C-b ] 貼上(回車結束)

C-b , 給當前視窗改名

Figure 1-1: tmux分屏幫助頁(C-b ?)
配置:
配置檔案位於:~/.tmux.conf,沒有可以自己建一個。配置檔案內容基本就是tmux命令列表。
可避免與終端快捷鍵衝突改動一些內容,如下:
#-- base --#
set -g default-terminal "screen"
set -g display-time 3000
set -g history-limit 65535
#----------------------------------------------
#將預設按鍵字首改為與C-i避免與終端快捷鍵衝突
set-option -g prefix C-i
unbind-key C-b
bind-key C-i send-prefix
#----------------------------------------------
#按鍵繫結
#水平或垂直分割視窗 (C+A+ :split-window + v/h)
unbind '"'
bind - splitw -v #分割成上下兩個視窗
unbind %
bind | splitw -h #分割成左右兩個視窗
#----------------------------------------------
#選擇分割的窗格
bind k selectp -U #選擇上窗格
bind j selectp -D #選擇下窗格
bind h selectp -L #選擇左窗格
bind l selectp -R #選擇右窗格
#----------------------------------------------
#重新調整窗格的大小
bind ^k resizep -U 10
bind ^j resizep -D 10
bind ^h resizep -L 10
bind ^l resizep -R 10
#----------------------------------------------
#交換兩個窗格
bind ^u swapp -U
bind ^d swapp -D
bind ^a last
bind q killp
#----------------------------------------------
bind '~' splitw htop
bind ! splitw ncmpcpp
bind m command-prompt "splitw -h 'exec man %%'"
unbind s
#----------------------------------------------
#定製狀態行
set -g status-left "#[fg=white,bg=blue] > #I < #[default] |" # 0:bash
#set -g status-left "#[fg=white,bg=blue] > #I < #[default] |" # session-name
set -g status-right "#[fg=yellow,bright][ #[fg=cyan]#W #[fg=yellow]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green]%H:%M #[default]"
set -g status-right-attr bright
set -g status-bg black
set -g status-fg white
set -g set-clipboard on
setw -g window-status-current-attr bright
#setw -g window-status-current-bg red
setw -g window-status-current-bg green
setw -g window-status-current-fg white
set -g status-utf8 on
set -g status-interval 1
#set -g visual-activity on
#setw -g monitor-activity on
set -g status-keys vi
#----------------------------------------------
setw -g mode-keys vi
setw -g mode-mouse on
#setw -g mouse-resize-pane on
#setw -g mouse-select-pane on
#setw -g mouse-select-window on
# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o -sel clipbaord)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux show-buffer | xclip -i -sel clipbaord"
#預設啟動應用
#new -s work # 新建名為 work 的會話,並啟動 mutt
#neww rtorrent # 啟動 rtorrent
#neww vim # 啟動 vim
#neww zsh
#selectw -t 3 # 預設選擇標號為 3 的視窗

自定義tmux窗口布局

啟動tmux時,可以按照自己已定義的方式自動開啟多個tmux分屏視窗
例:建立一個指令碼檔案

gedit ~/.tmux/mylayout

selectp -t 0    #選中第0個窗格
splitw -h -p 50  #將其分成左右兩個
selectp -t 1     #選中第一個,也就是右邊那個
splitw -v -p 50  #將其分成上下兩個,這樣就變成了圖中的佈局了
selectp -t 0     #選回第一個
在.tmux.conf 後面加上一句

bind D source-file ~/.tmux/mylayout  

這樣每次進入tmux後,鍵入 Ctrl + b D (D是大寫,要按shrift,你也可以按成其他字元,只要跟tmux已經用的不衝突即可),即會自動執行mylayout指令碼,生成圖示佈局。如果 .tmux.conf 檔案不存在的話,請自己生成。注意前面有個.(點)

另外還有一些小功能,通過在.tmux.conf中新增相應的命令開啟對應的功能即可:

滑鼠可以選中窗格  set-option -g mouse-select-pane on

滑鼠滾輪可以用    set-window-option -g mode-mouse on

滷煮建立指令碼時,發現無.tmux資料夾,也無~/.tmux.conf檔案,沒有嘗試,不過對於平常使用似乎沒有conf也能正常使用
Figure 1-2: tmux分屏效果
參考:
專案主頁:http://tmux.github.io/
ubuntu下tmux用法:http://blog.csdn.net/jideljd_2010/article/details/27093725
tmux簡單教程:http://blog.csdn.net/jianbinhe1012/article/details/7741727
tmux安裝、使用、配置:http://blog.chinaunix.net/uid-26495963-id-3140087.html


2、vim分屏技巧

主要是sp和vsp兩個命令,在終端輸入時主要是-O和-o兩個引數,可能因為之前滷煮的vim裝了python外掛,使用分屏快捷鍵時不太方便,沒有想象中的方便,可能還沒發現vim分屏的強大吧。

分屏啟動Vim
vim -On file1 file2 ...使用大寫的O引數來垂直分屏。
vim -on file1 file2 ...使用小寫的o引數來水平分屏。
註釋: n是數字,表示分成幾個屏。

關閉分屏 
Ctrl+W c//關閉當前視窗。

Ctrl+W q//關閉當前視窗,如果只剩最後一個了,則退出Vim。

分屏
Ctrl+W s//上下分割當前開啟的檔案。
:sp filename//上下分割,並開啟一個新的檔案。
Ctrl+W v//左右分割當前開啟的檔案。 
:vsp filename//左右分割,並開啟一個新的檔案。

移動游標
Vi中的游標鍵是h, j, k, l,要在各個屏間切換,只需要先按一下Ctrl+W
Ctrl+W l//把游標移到右邊的屏。
Ctrl+W h//把游標移到左邊的屏中。
Ctrl+W k//把游標移到上邊的屏中。
Ctrl+W j//把游標移到下邊的屏中。
Ctrl+W w//把游標移到下一個的屏中。.

移動分屏
這個功能還是使用了Vim的游標鍵,只不過都是大寫。當然了,如果你的分屏很亂很複雜的話,這個功能可能會出現一些非常奇怪的症狀。
Ctrl+W L//向右移動。
Ctrl+W H//向左移動 
Ctrl+W K//向上移動 
Ctrl+W J//向下移動 

螢幕尺寸
下面是改變尺寸的一些操作,主要是高度,對於寬度你可以使用Ctrl+W <或是>,但這可能需要最新的版本才支援。
Ctrl+W =//讓所有的屏都有一樣的高度。
Ctrl+W +//增加高度。
Ctrl+W -//減少高度。
Figure 2-1:vim分屏效果 參考:
vim的分屏功能:http://www.cnblogs.com/wanyao/archive/2011/05/31/2064857.html
百度經驗Vim的分屏技巧的使用:http://jingyan.baidu.com/article/7908e85c70b25baf481ad296.html