tmux

个人~/.tmux.confhtml

set-window-option -g mode-keys vi #能够设置为vi或emacs
set-window-option -g utf8 on #开启窗口的UTF-8支持
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -Rlinux

快捷键git

           C-b  将前缀密钥(C-b)发送到应用程序。
           C-o  向前旋转当前窗口中的窗格。
           C-z  暂停tmux客户端。
           !    将当前窗格打开窗口。
           "      将当前窗格拆分为两个,顶部和底部。
           #    列出全部粘贴缓冲区。
           $      重命名当前会话。
           %    将当前窗格分为左,右两个。
           &     杀死当前窗口。
           '       提示选择一个窗口索引。
           (      将附加的客户端切换到上一个会话。
           )      将链接的客户端切换到下一个会话。
           ,   重命名当前窗口。
            -    删除最近复制的文本缓冲区。
           .    提示索引移动当前窗口。
           0到9  选择窗口0到9。
           :  输入tmux命令提示符。
           ;  移至先前活动的窗格。
           =  从列表中选择要交互粘贴的缓冲区。
           ?  列出全部键绑定。
           D  选择要分离的客户端。
           L  将链接的客户端切换回上一个会话。
           [  进入复印模式以复制文本或查看历史记录。
           ]  粘贴最近复制的文本缓冲区。
           c  建立一个新窗口。
           d  分离当前客户端。
           f  提示在打开的窗口中搜索文本。
           i  显示有关当前窗口的一些信息。
           l  移至先前选择的窗口。
           n  转到下一个窗口。
           o  选择当前窗口中的下一个窗格。
           p  切换到上一个窗口。
           q  简要显示窗格索引。
           r  强制重绘附加的客户端。
           m  标记当前窗格(请参阅select-pane -m)。
           M  清除标记的窗格。
           s  以交互方式为链接的客户端选择新会话。github

           t  显示时间。
           w  以交互方式选择当前窗口。
           x  杀死当前窗格。
           z  切换当前窗格的缩放状态。
           {  将当前窗格与前一个窗格交换。
           }  使用下一个窗格交换当前窗格。
           〜  显示来自tmux的先前消息(若是有)。
           Page Up  进入复印模式并向上滚动一页。
           方向键   切换到当前窗格上方,下方,左侧或右侧的窗格。
           M-1到M-5   在五种预设布局中的一种中排列窗格:偶数水平,偶数垂直,主水平,主垂直或平铺。
           空格  在下一个预设布局中排列当前窗口。
           M-n  使用铃声或活动标记移动到下一个窗口。
           M-o  向后旋转当前窗口中的窗格。
           M-p  使用铃声或活动标记移动到上一个窗口。
           C-Up,C-Down
           C-Left,C-Right
                       以一个单元格的步长调整当前窗格的大小。
           M-Up,M-Down
           M-Left,M-Right
                       以五个单元格为步骤调整当前窗格的大小。ubuntu

     可使用bind-key和unbind-key命令更改密钥绑定。vim

 

 https://wdxtub.com/2016/03/30/tmux-guide/windows

tmux 指南

今天试用了一下 tmux,发现简直是神器!之前还傻傻不停开窗口,如今一个窗口就能够都搞定啦!缓存


更新记录服务器

  • 2016.03.30: 初稿

Tmux 简单来讲就是终端里的『窗口管理器』,若是我使用终端登陆到远程主机并运行前台程序,那么这个窗口等于就被占用了,想要看一下 CPU 的使用率,就得再链接一次。可是若是在远程主机上运行 tmux,那么就能够开启多个控制台(相似于窗口),至关高效,比方说能够像下面这样:session

一个面板监视服务器,一个面板查看硬件情况

须要注意的是,这里是在我本地使用 tmux,最好在远程主机也安装 tmux,这样就只须要链接一次。

Hello World

前面提到的窗口管理只是 tmux 功能的一小部分,另外一个颇有用的功能就是,链接到远程主机以后,一旦断开,那么当前帐户登陆的任务就被取消了,可是使用 tmux 能够在断开以后继续工做,下次登陆能够查看。其余的功能还有:

  1. 窗口切换,每一个窗口里还能够分割面板
  2. 配置方便,可使用脚本
  3. 相似 vim 的双层操做逻辑
  4. 复制粘贴缓冲区

安装的话也很简单,在 mac 下直接 brew install tmux(前提须要安装 homebrew),ubuntu 下则直接 sudo apt-get install tmux

在终端中输入 tmux 就能够打开一个新的 tmux session,tmux 的全部操做必须先使用一个前缀键(默认是 ctrl + b)进入命令模式,或者说进入控制台,就像 vim 中的 esc。

基本操做

信息查询

  • tmux list-keys 列出全部能够的快捷键和其运行的 tmux 命令
  • tmux list-commands 列出全部的 tmux 命令及其参数
  • tmux info 流出全部的 session, window, pane, 运行的进程号,等。

窗口控制

先来看看在 tmux 以外如何进行控制

  • session 会话:session是一个特定的终端组合。输入tmux就能够打开一个新的session
    • tmux new -s session_name 建立一个叫作 session_name 的 tmux session
    • tmux attach -t session_name 从新开启叫作 session_name 的 tmux session
    • tmux switch -t session_name 转换到叫作 session_name 的 tmux session
    • tmux list-sessions / tmux ls 列出现有的全部 session
    • tmux detach 离开当前开启的 session
    • tmux kill-server 关闭全部 session
  • window 窗口:session 中能够有不一样的 window(可是同时只能看到一个 window)
    • tmux new-window 建立一个新的 window
    • tmux list-windows
    • tmux select-window -t :0-9 根据索引转到该 window
    • tmux rename-window 重命名当前 window
  • pane 面板:window 中能够有不一样的 pane(能够把 window 分红不一样的部分)
    • tmux split-window 将 window 垂直划分为两个 pane
    • tmux split-window -h 将 window 水平划分为两个 pane
    • tmux swap-pane -[UDLR] 在指定的方向交换 pane
    • tmux select-pane -[UDLR] 在指定的方向选择下一个 pane

更经常使用的是在 tmux 中直接经过默认前缀 ctrl + b 以后输入对应命令来操做,具体以下(这里只列出输入默认前缀以后须要输入的操做):

基本操做

  • ? 列出全部快捷键;按q返回
  • d 脱离当前会话,可暂时返回Shell界面
  • s 选择并切换会话;在同时开启了多个会话时使用
  • D 选择要脱离的会话;在同时开启了多个会话时使用
  • : 进入命令行模式;此时可输入支持的命令,例如 kill-server 关闭全部tmux会话
  • [ 复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出
  • ] 进入粘贴模式,粘贴以前复制的内容,按q/Esc退出
  • ~ 列出提示信息缓存;其中包含了以前tmux返回的各类提示信息
  • t 显示当前的时间
  • ctrl + z 挂起当前会话

窗口操做

  • c 建立新窗口
  • & 关闭当前窗口
  • [0-9] 数字键切换到指定窗口
  • p 切换至上一窗口
  • n 切换至下一窗口
  • l 先后窗口间互相切换
  • w 经过窗口列表切换窗口
  • , 重命名当前窗口,便于识别
  • . 修改当前窗口编号,至关于从新排序
  • f 在全部窗口中查找关键词,便于窗口多了切换

面板操做

  • " 将当前面板上下分屏(我本身改为了 |
  • % 将当前面板左右分屏(我本身改为了 -
  • x 关闭当前分屏
  • ! 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板
  • ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小
  • alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小
  • q 显示面板编号
  • o 选择当前窗口中下一个面板
  • 方向键 移动光标选择对应面板
  • { 向前置换当前面板
  • } 向后置换当前面板
  • alt+o 逆时针旋转当前窗口的面板
  • ctrl+o 顺时针旋转当前窗口的面板
  • z 最大化当前所在面板
  • page up 向上滚动屏幕,q 退出
  • page down 向下滚动屏幕,q 退出

由于 iTerm2 的支持,不少切换的操做能够直接用鼠标进行,很是方便。具体你们能够本身尝试一下。

配置

咱们能够先进行一些简单的配置,修改 ~/.tmux.conf 便可,让整个使用更方便。

#-- base --#
 
set -g default-terminal "screen-256color"
set -g display-time 3000
set -g history-limit 10000
set -g base-index 1
set -g pane-base-index 1
set -s escape-time 0
set -g mouse on
 
#-- bindkeys --#
 
# split windows like vim. - Note: vim's definition of a horizontal/vertical split is reversed from tmux's
 
unbind s
bind s split-window -v
bind S split-window -v -l 40
bind v split-window -h
bind V split-window -h -l 120
 
# navigate panes with hjkl
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
 
# key bindings for horizontal and vertical panes
unbind %
bind | split-window -h # 使用|竖屏,方便分屏
unbind '"'
bind - split-window -v # 使用-横屏,方便分屏
 
# swap panes
bind ^u swapp -U
bind ^d swapp -D
 
bind q killp
bind ^e last
 
unbind r
bind r source-file ~/.tmux.conf \; display "Configuration Reloaded!"
 
#-- statusbar --#
 
set -g status-justify centre
set -g status-left "#[fg=red]s#S:w#I.p#P#[default]"
set -g status-right '[#(whoami)#(date +" %m-%d %H:%M ")]'
set -g status-left-attr bright
set -g status-left-length 120
set -g status-right-length 120
set -g status-utf8 on
set -g status-interval 1
set -g visual-activity on
setw -g monitor-activity on
setw -g automatic-rename off
 
# default statusbar colors
set -g status-bg colour235 #base02
set -g status-fg colour136 #yellow
set -g status-attr default
 
# default window title colors
setw -g window-status-fg colour244
setw -g window-status-bg default
#setw -g window-status-attr dim
 
# active window title colors
setw -g window-status-current-fg colour166 #orange
setw -g window-status-current-bg default
#setw -g window-status-current-attr bright
 
# window title string (uses statusbar variables)
set -g set-titles-string '#T'
set -g status-justify "centre"
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
 
# pane border
set -g pane-active-border-fg '#55ff55'
set -g pane-border-fg '#555555'
 
# message text
set -g message-bg colour235 #base02
set -g message-fg colour166 #orange
 
# pane number display
set -g display-panes-active-colour colour33 #blue
set -g display-panes-colour colour166 #orange
 
# clock
setw -g clock-mode-colour colour64 #green
 
 
# 修改进入命令模式按键
# remap prefix to Control + a
# set -g prefix C-a
# unbind C-b
# bind C-a send-prefix

最终的效果是

参考连接

相关文章
相关标签/搜索