tmux 无法创建会话_终端复用神器Tmux

5d176637267054d20c1c7f88b70898a2.png
记得第一次接触tmux是在一年前,当时是为了复用终端,不想开多个item2的tab,但是后来发现完全不会用,就一直搁在那儿,直到半年前再次拿起来,开始学习一些tmux的用法,如今半年过去了,真正的明白了为什么说tmux是神器。

在用tmux之前一直都是用的iterm2(在mac上很好用的终端)原生的新开tab和分屏,其实也还好,界面看起来就像这样:

71abea744c804668c9a70a8c0115ab73.png

item2

但是分屏很多之后,可以看到很多状态栏,并不是很美观,对比tmux的分屏,看起来就要hack很多,tmux的分屏界面如下:

52aaa3b45390864201aab6c604ce8355.png

tmux

正是基于这个原因,开始学着始使用tmux。

安装

tmux的仓库:https://github.com/tmux/tmux

首先安装tmux:

# mac安装brew install tmux# linux 安装sudo apt-get install tmux

开始学习tmux之前首先要明确几个概念:

  • session:概括一个任务,是一组window的集合,在任务开始前创建一个session,与此任务相关的状态都会保存在session中,通过重新连接session可以方便的继续未完成的任务。session最大的最用就是持久的保存工作状态
  • window:tmux中的window其实就是我们常说的tab,在chrome中,新开一个tab就会新建一个页面,tmux也类似
  • pane:单个window可以分成若干pane,就像前面使用iterm2分屏一样

简单来说就是:session包含window,window包含pane

a7823654405d4f2874c879ebaac53d12.png

tmux名词标注

session

新建

安装完成后,在终端直接输入`tmux`即可进入tmux。进入之后可以看到session的名字是0,这是因为我们直接输入`tmux`会创建一个无名的会话,如果想要新建session的时候给session命名,可以使用以下命令:

tmux new -s your-session-name

断开

如果想要断开当前session可以使用

tmux detach # 断开当前会话

或者使用快捷键`[prefix]+d`,其中`prefx`默认为`ctrl+b`

恢复

退出session之后,想要恢复之前工作的区域,直接在终端输入:

tmux attach-session -t your-session-name# 可以简写tmux a -t your-session-name

其中`session-name`是可选的,如果不输入,默认进入第一个会话。

关闭

使用完成后,要关闭,可以使用`tmux kill`命令,`kill`有以下四种:

  • `kill-server`:关闭sessions,clients和server,这个命令会将tmux创建的都关闭
  • `kill-session`
  • `kill-window`
  • `kill-pane`
# 关闭sessiontmux kill-session -t your-session-name# 关闭所有tmux kill-server

查看

tmux list-session# 简写tmux ls

或者使用快捷键`prefix+s`查看所有session,`prefix+w`查看所有window。

c5fe7cf6d5eef99aee59ec0d84daa073.png

tmux基础配置

tmux的配置在`~/.tmux.conf`文件中,如果没有该文件,可以先新建配置文件。

配置tmux前缀

前面介绍session使用的时候,提到过一些快捷键,可以看到都是`prefix+xxx`的形式,这里的`prefix`是tmux的前缀键,默认为`ctrl+b`,只有按下`prefix`,才会激活tmux,然后再按其他键进行tmux操作,这样做的一个好处是可以有效的避免和其他应用快捷键的冲突。

但是如果经常用tmux,就会发现`ctrl`和`b`这两个键按的不是很舒服,我们是否可以修改一个更加舒服的前缀键呢?当然是可以的,只需要在tmux的配置文件中解绑原有的`prefix`并修改成我们自定义的即可。配置如下:

set -g prefix C-a# 解绑原有的prefixunbind C-bbind C-a send-prefix

配置完成后,需要重启tmux,或者按下`ctrl+b`,然后输入`:`进入命令模式,输入:

source-file ~/.tmux.conf

或者我们给让配置生效添加快捷键:

bind r source-file $HOME/.tmux.conf ; display-message 'Config reloaded'

这样,直接输入`prefix+r`就可以让配置生效。

分屏

在tmux中,水平和竖直分屏默认快捷键为`prefix+"` 和 `prefix+%`,这两个键可以说很少用而且不容易按到,我们可以自定义自己习惯的快捷键,对于对vim熟悉的用户,可以将其设置为跟vim一样的快捷键:

bind C-h splitw -v -c '#{pane_current_path}'bind C-v splitw -h -c '#{pane_current_path}'

这里的`splitw`其实是`split-window`的缩写,`-c '#{pane_current_path}'`表示在打开新pane的时候,默认进入当前目录。

切换pane

在iterm2中,切换标签的快捷键是`commond+option+方向键`或`commond+[`或`commond+]`,相应的在tmux中,切换pane默认快捷为`prefix+方向键`但是方向键本身和`ctrl`离的太远,操作不方便,同样的我们可以设置自己喜欢的快捷键,例如设置跟vim一样的快捷键(这里多说一句,其实在vim中最常用的控制方向的键就是hjkl,如果习惯使用vim,可以设置tmux与之相同快捷键)。

bind h select-pane -L # upbind j select-pane -D # downbind k select-pane -U # leftbind l select-pane -R # right

开启鼠标支持

在刚上手tmux的时候,总觉得各种命令很麻烦,而且不好记,如果支持鼠标就更好了,其实想要支持鼠标,只需要在配置文件中开启即可:

set-option -g mouse on

开启鼠标之后,切换pane可以直接点击激活,调整分屏大小可以直接拖拽实现。

当然了,既然使用了tmux,目的就不只是界面好看而已,而是要提高效率,所以尽量少用鼠标

调整pane

如果想要使用快捷键调节pane大小,同样可以设置快捷键实现:

bind H resize-pane -L 10 # 向左扩展10bind L resize-pane -R 10 # 向右扩展10bind K resize-pane -U 5 # 向上扩展5bind J resize-pane -D 5 # 向下扩展5

这样通过`prefix+HJKL`实现pane的扩展

System

3649aff507fdcf43bb8b53a5f58f8c81.png

system

Window

bb7ce497691bf965e10467b71b379c8d.png

window

Panel

beb082e427f04a5a3088f6297c6463f1.png

Panel

参考

  • http://louiszhai.github.io/2017/09/30/tmux/#Tmux%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4)
  • https://cnbin.github.io/blog/2015/06/20/iterm2-kuai-jie-jian-da-quan/
  • https://gist.github.com/MohamedAlaa/2961058
  • https://gist.github.com/andreyvit/2921703

本文首发于博客/微信公众号,更多内容可关注微信公众号:tranceCoder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值