分屏利器tmux

我的系统环境:

  1. Elementary os luna
  2. 主要写Python服务端程序

一直习惯在linux上面工作,对于terminal来说,Tmux是必不可少的分屏利器。平时比较习惯使用这个工具进行分屏进行以下一些操作:

  1. 对比多屏文本的差异(如日志输出,文件比较,命令执行结果之类的)
  2. 同时登陆多个服务器执行命令或者查看日志

直接进入主题,看下我的配置文件~/.tmux.conf,我的配置使用了ctrl+a作为启用键,没有用默认的,会屏蔽掉在vim编辑的时候ctrl+a自动对行内数字类增的功能,这个屏蔽可以避免手贱改了数字的值都不知道。

set -g prefix ^a
unbind ^b
bind a send-prefix
setw -g mode-keys vi 

set -g base-index 1

#水平或垂直分割窗口
unbind '"'
bind - splitw -v -c "#{pane_current_path}" # 分割成上下两个窗口
unbind %
bind | splitw -h -c "#{pane_current_path}" # 分割成左右两个窗口'"'
bind c new-window -c "#{pane_current_path}"

#选择分割的窗格
bind k selectp -U # 选择上窗格
bind j selectp -D # 选择下窗格
bind h selectp -L # 选择左窗格
bind l selectp -R # 选择右窗格

#重新调整窗格的大小
bind ^k resizep -U 10 # 跟选择窗格的设置相同,只是多加 Ctrl(Ctrl-k)
bind ^j resizep -D 10 # 同上
bind ^h resizep -L 10 # ...
bind ^l resizep -R 10 # ...

#交换两个窗格
bind ^u swapp -U # 与上窗格交换 Ctrl-u
bind ^d swapp -D # 与下窗格交换 Ctrl-d

# 状态栏设置
# status bar with load and time 
set -g status-bg blue
set -g status-fg '#bbbbbb'
set -g status-left-fg green
set -g status-left-bg blue
set -g status-right-fg green
set -g status-right-bg blue
set -g status-left-length 90
set -g status-right-length 90
set -g status-left '[#(whoami)]'
set -g status-right '[#(date +" %m-%d %H:%M ")]'
#set -g status-justify "centre"
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
setw -g window-status-current-bg blue
setw -g window-status-current-fg green
set -g default-terminal "screen-256color"

配置文件都是从网友分享集合而成,简单介绍下常用操作,需要提醒一下的是,默认启用键改了为ctrl+a

  1. 水平分割窗格ctrl+-就是control键加0键后面横线键,不需要shift
  2. 垂直分割窗格ctrl+|就是control键加回车键上面竖线键,需要shift
  3. 选择分割窗格和vim键的上下左右相同hjkl分别对应左、下、上和右
  4. 窗格大小变化就是和上一条移动的快捷键加多了control
  5. 向左 ctrl+h
  6. 向右 ctrl+l
  7. 向上 ctrl+k
  8. 向下 ctrl+j
  9. 交换窗格
  10. ctrl+u与上窗格交换
  11. ctrl+d与下窗格交换
  12. 多窗格自动分布ctrl+space空格键,主要多个窗格的时候把各个窗格大小统一调整到等宽或者等高
  13. 将当前窗格最大化ctrl+z,我记得好像是Tmux比较新的版本才有这个功能

我平时还需要登陆多个服务器去执行些命令,虽然有很多工具如fabfile等,但tmux比较直观,简单写了一些脚本,可以在各个窗格执行不同命令,然后使用ctrl+a+:输入命令set synchronize-panes,使到多个窗格都同时得到输入相同的内容。

下面脚本也是引用网友的然后自己修改了一下,这个脚本自动分割4个窗格出来,然后我每个窗格用来登陆一组服务器,使用synchronize-panes on同步输入,用来查看日志、检查运行程序等。

cmd=$(which tmux)      # tmux path        
                                                              
if [ -z $cmd ]; then              
    echo "You need to install tmux."      
    exit 1                               
fi                      
                                    
$cmd has -t $session 2> /dev/null       
                                                             
if [ $? != 0 ]; then                                                     
    $cmd new -d -n base-act -s $session "zsh"    
    $cmd splitw -v -t $session                    
    $cmd splitw -h -t $session                   
    $cmd select-layout -t $session tiled        
    $cmd send-keys -t $session:1.0 '执行的命令' C-m     
    $cmd send-keys -t $session:1.1 '执行的命令' C-m      
    $cmd send-keys -t $session:1.2 '执行的命令' C-m      
    $cmd send-keys -t $session:1.3 '执行的命令' C-m 
    $cmd set-window-option synchronize-panes on        
    #$cmd neww -n vim -t $session "zsh"         
    #$cmd selectw -t $session:5        
fi                          
                                              
$cmd att -t $session                 
                  
exit 0    
分屏利器tmux_第1张图片
Paste_Image.png

平时主要到上面的东西,太过深的东西倒是没研究,有好的技巧可以大家分享下。

你可能感兴趣的:(分屏利器tmux)