前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利器系列-终端分屏利器 tmux

利器系列-终端分屏利器 tmux

作者头像
Jintao Zhang
发布2018-08-27 15:03:26
2.4K0
发布2018-08-27 15:03:26
举报
文章被收录于专栏:MoeLove

这是利器系列的第 1 篇,当然还是要写每天都在用的 tmux 咯! 当时我不会介绍 tmux 的全部内容。 第 0 篇是 利器系列-更高效的Vim

终端分屏

首先,我们先来了解下终端分屏是什么。顾名思义,终端分屏就是把一个终端屏幕拆解为多个窗口,并且可以进行切换。

  • 为什么要进行终端分屏呢?

看过我介绍或者看过我之前文章的,应该都知道我是个 Vim 党,日常工作也都是在终端下,在终端下使用编辑器而不使用 GUI 或者 IDE,第一是因为在终端下我可以使用全键盘控制,不需要鼠标之类的,效率很高;第二,在终端下可以更灵活的配合系统工具完成我所需要的一切,包括测试之类的;第三,IDE 的功能太过繁琐,占用资源很多,而对我来说,这些都是累赘。第四,因为我长期都在 Linux 下,而且更多时间在考虑效率,默认情况下,终端内的 Vim 要比其他各种 IDE 要看着顺眼的多。

  • 为什么不使用 iTerm2 呢?

iTerm2 是一个纯粹的 GUI 工具,它的切割是真正对窗口的切割,而非对终端的切割,并且它也不能保存会话信息。为什么我一直在说会话信息呢?你有没有试过 结对编程 ? (看我纯洁的微笑 :-) 用 tmux 绝对是利器!

tmux 简介

tmux 不仅仅是一款终端分屏软件(终端复用器),同时 tmux 也可以随时断开或者进入会话,即终端会话保持(可能你会想到 Screen 但 tmux 却可以做到更多)。想想你有没有遇到过在服务器上编译调试,去接了杯水回来发现 Write failed: Broken pipe 连接断开了,又得重新开始。如果你有过类似经历,那么还是把后面的内容看完,并开始使用 tmux 吧! 下面我们先来聊一下 tmux 中的一些基本概念:

Session 会话

一组窗口或者说一个 tmux 实例。当你每次输入 tmux 的时候,便打开了一个会话。 类似的还有以下命令:

tmux attach-session 将会进入一个会话 tmux list-sessions 将列出所有会话

Window 窗口

一个可用于执行任务的窗口。 使用 <bind-key> c 可以创建一个新的窗口, 将 c 换为 np 可以进行前后切换。

Pane 窗格

切割成小块的窗口,可类比 Vim 中的窗口切割. <bind-key> " 或者 <bind-key> % 可以进行水平或者垂直分屏。

安装

Mac

代码语言:javascript
复制
brew install tmux

Linux

代码语言:javascript
复制
sudo apt-get install tmux  # Debian/Ubuntu

sudo yum install tmux  # CentOS/Fedora

配置

可以创建一个 $HOME/.tmux.conf 的文件, 配置项可以 man tmux 查看,或者直接使用我的

代码语言:javascript
复制
wget https://raw.githubusercontent.com/tao12345666333/dotfiles/master/tmux/tmux.conf -O $HOME/.tmux.conf

常用配置的说明

基础配置
代码语言:javascript
复制
set -g default-terminal 'screen-256color'
# 设置默认颜色

set -g status-utf8 on
# 支持 utf-8 

set -g history-limit 100000
# 设置历史记录最大条数

setw -g mode-keys vi
# 设置按键模式为 Vi 模式
窗口切割

tmux v1.9 开始 default-path 选项被移除,所以如果在某个位置新建窗口,则会跳转到家目录下,所以我们使用 -c 参数增加下面这些配置

代码语言:javascript
复制
unbind-key c
# 取消对 c 键的绑定

bind-key c new-window -c '#{pane_current_path}'
# 将 c 键绑定为从当前路径创建新窗口

unbind-key '"'
# 取消对 " 键的绑定

bind-key '"' split-window -v -c '#{pane_current_path}'
# 将 " 键绑定为从当前路径水平切割窗口

unbind-key %
# 取消对 % 键的绑定

bind-key % split-window -h -c '#{pane_current_path}'
# 将 " 键绑定为从当前路径竖直切割窗口
重载配置
代码语言:javascript
复制
bind-key R source-file ~/.tmux.conf \; display-message "Reload .."
# 绑定 R 键,重载配置文件,并显示 "Reload .." 提示信息
选择Pane(窗格)
代码语言:javascript
复制
# 以下配置为取消原有 hjkl 键的绑定
# 并绑定 Pane 选择,和 Vim 操作一致
unbind-key h
bind-key h select-pane -L

unbind-key j
bind-key j select-pane -D

unbind-key k
bind-key k select-pane -U

unbind-key l
bind-key l select-pane -R
设置颜色及状态栏
代码语言:javascript
复制
# 配置后的样式可参考我文末的截图

set -g status-fg '#55ff53'
set -g status-bg '#0a4174'
set -g status-left-fg '#55ff53'
set -g status-left-bg '#0a4174'
set -g status-right-fg '#55ff53'
set -g status-right-bg '#0a4174'
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 pane-active-border-fg '#55ff53'
set -g pane-border-fg '#7fcfee'

使用

在终端输入下面的命令就可以开始使用 tmux 了

代码语言:javascript
复制
➜  ~ tmux

而想要退出的时候,也只要输入 exit 即可

代码语言:javascript
复制
➜  ~ exit

注意:在Linux下,默认$TERM 是xterm, 直接启动tmux并且打开vim的话, 会出现颜色不对的情况。使用tmux -2 启动, 强制启动256色。

应用

  • 窗格同步
代码语言:javascript
复制
<bind-key> :set synchronize-panes on

执行这条命令可以让所有窗格内容同步。多用于一些批量环境命令之类的。

  • 使用下面的代码,做多ssh连接
代码语言:javascript
复制
starttmux() {
    if [ -z "$HOSTS" ]; then
       echo -n "Please provide of list of hosts separated by spaces [ENTER]: "
       read HOSTS
    fi

    local hosts=( $HOSTS )
    echo ' >>> will connnect to'
    echo '------'
    echo ${hosts[@]}
    echo '------'

    tmux new-window "ssh -p 31220 tao@${hosts[0]}"
    unset hosts[0];
    for i in "${hosts[@]}"; do
        tmux split-window -h  "ssh -p 31220 tao@$i"
        tmux select-layout tiled > /dev/null
    done
    tmux select-pane -t 0
    tmux set-window-option synchronize-panes on > /dev/null

}

HOSTS=${HOSTS:=$*}

starttmux

使用截图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MoeLove 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 终端分屏
  • tmux 简介
    • Session 会话
      • Window 窗口
        • Pane 窗格
        • 安装
          • Mac
            • Linux
              • 配置
                • 常用配置的说明
            • 使用
            • 应用
            • 使用截图
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档