在mac中安装tmux
在mac 中安装Tmux:
在终端输入如下命令:
brew install tmux
Tmux 的快捷键前缀(Prefix)
为了使自身的快捷键和其他软件的快捷键互不干扰,Tmux 提供了一个快捷键前缀。当想要使用快捷键时,需要先按下快捷键前缀,然后再按下快捷键。Tmux 所使用的快捷键前缀默认是组合键 Ctrl-b(同时按下 Ctrl 键和 b 键)。
但是,由于键盘上 Ctrl 键和 b 键距离太远了,操作起来特别不方便,所以经常需要修改快捷键前缀:只需将以下配置加入到 Tmux 的配置文件 ~/.tmux.conf 中(没有此文件就创建一个):
#个人喜欢吧快捷键前缀设置为 Ctrl + a
unbind C-b
set -g prefix C-a
Tmux 中的特殊功能
会话(session)
一个 Tmux 会话中可以包含多个窗口。在会话外创建一个新的会话:
tmux new -s <name-of-my-session>
进入会话后创建新的会话:只需要按下 Ctrl-b : ,然后输入如下的命令:
Ctrl-b
:new -s <name-of-my-new-session>
在 Tmux 的会话间切换
在会话内获取会话列表,可以按下Ctrl-b s。下图所示的就是会话的列表:
Ctrl-b s
列表中的每个会话都有一个 ID,该 ID 是从 0 开始的。按下对应的 ID 就可以进入会话。
在会话外获取会话列表:
tmux ls
在会话外进入会话:
tmux attach -t <name-of-my-session>
或
tmux a -t <name-of-my-session>
#进入列表中第一个会话
tmux attach
或
tmux a
临时退出但不删除会话:
Ctrl + b d
在会话内退出并删除session
Ctrl+b
:kill-session
#删除所有session
Ctrl+b
:kill-server
在会话外删除指定session
tmux kill-session -t <name-of-my-session>
窗口(Window)
一个 Tmux 会话中可以包含多个窗口。一个窗口中有可以防止多个窗格。
在 Tmux 的会话中,现有的窗口将会列在屏幕下方。下图所示的就是在默认情况下 Tmux 列出现有窗口的方式。这里一共有三个窗口,分别是“server”、“editor”和“shell”。
创建窗口:
Ctrl-b c
查看窗口列表
Ctrl-b w
切换到指定窗口,只需要先按下Ctrl-b,然后再按下想切换的窗口所对应的数字。
Ctrl-b 0
切换到下一个窗口
Ctrl+b n
切换到上一个窗口
Ctrl+b p
在相邻的两个窗口里切换
Ctrl+b l
重命名窗口
Ctrl+b ,
在多个窗口里搜索关键字
Ctrl+b f
删除窗口
Ctrl+b &
窗格(Panes)
一个tmux窗口可以分割成若干个格窗。并且格窗可以在不同的窗口中移动、合并、拆分。
创建pane横切split pane horizontal
Ctrl+b "
竖切split pane vertical
Ctrl+b %
按顺序在pane之间移动
Ctrl+b o
上下左右选择pane
Ctrl+b 方向键上下左右
调整pane的大小(我发现按住Ctrl+b 再按 [上|下|左|右] 键也可以实现相同的效果)
Ctrl+b
:resize-pane -U #向上
Ctrl+b
:resize-pane -D #向下
Ctrl+b
:resize-pane -L #向左
Ctrl+b
:resize-pane -R #向右
在上下左右的调整里,最后的参数可以加数字 用以控制移动的大小,例如:
Ctrl+b
:resize-pane -D 5 #向下移动5行
在同一个window里上下左右移动pane
Ctrl+b { (往左边,往上面)
Ctrl+b } (往右边,往下面)
删除pane
Ctrl+b x
更换pane排版(上下左右分隔各种换)
Ctrl+b “空格”
移动pane至新的window
Ctrl+b !
移动pane合并至某个window
Ctrl+b :join-pane -t $window_name
按顺序移动pane位置
Ctrl+b Ctrl+o
显示pane编号
Ctrl+b q
显示时间
Ctrl+b t
十分钟学会 tmux
tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理。在 macOS 下,使用 iTerm2 能应付绝大多数窗口管理的需求。
如上图所示,iTerm2 能新建多个标签页(快捷键 ⌘T),也能在同一个窗口中分割出多个窗格(快捷键 ⌘D 或 ⌘⇧D)。
tmux 相比 iTerm2 的优势在于:
iTerm2 的窗格切换快捷键(⌘⌥→)容易与其他软件全局快捷键冲突(例如 Spectacle 的窗口分割快捷键),tmux 由于存在前缀快捷键,所以不存在快捷键冲突问题;
tmux 可以在终端软件重启后通过命令行恢复上次的 session ,而终端软件则不行;
tmux 简洁优雅、订制性强,学会之后也能在 Linux 上使用,有助于逼格提升。
接下来我们花十分钟来掌握下 tmux 的基础用法:
安装运行
macOS 上使用 Homebrew 安装即可:
brew install tmux
安装完成后,运行 tmux
新建一个 tmux 的会话(session),此时窗口唯一的变化是在底部会出现一个 tmux 的状态栏。我们先按下 tmux 默认的前缀快捷键 ⌃b
将其激活为快捷键接收模式,再按下 %
,即可将当前窗口切分为左右两个窗格。
快捷键
一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 ⌃b
来组合使用(注:⌃ 为 Mac 的 control 键),以下是常用的窗格(pane)快捷键列表,大家可以依次尝试下:
窗格操作
%
左右平分出两个窗格"
上下平分出两个窗格x
关闭当前窗格{
当前窗格前移}
当前窗格后移;
选择上次使用的窗格o
选择下一个窗格,也可以使用上下左右方向键来选择space
切换窗格布局,tmux 内置了五种窗格布局,也可以通过⌥1
至⌥5
来切换z
最大化当前窗格,再次执行可恢复原来大小q
显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格
窗口操作
tmux 除了窗格以外,还有窗口(window) 的概念。依次使用以下快捷键来熟悉 tmux 的窗口操作:
c
新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态p
切换至上一窗口n
切换至下一窗口w
窗口列表选择,注意 macOS 下使用⌃p
和⌃n
进行上下选择&
关闭当前窗口,
重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id0
切换至 0 号窗口,使用其他数字 id 切换至对应窗口f
根据窗口名搜索选择窗口,可模糊匹配
会话操作
如果运行了多次 tmux
命令则会开启多个 tmux 会话(session)。在 tmux 会话中,使用前缀快捷键 ⌃b
配合以下快捷键可操作会话:
$
重命名当前会话s
选择会话列表d
detach 当前会话,运行后将会退出 tmux 进程,返回至 shell 主进程
在 shell 主进程下运行以下命令可以操作 tmux 会话:
tmux new -s foo # 新建名称为 foo 的会话
tmux ls # 列出所有 tmux 会话
tmux a # 恢复至上一次的会话
tmux a -t foo # 恢复名称为 foo 的会话,会话默认名称为数字
tmux kill-session -t foo # 删除名称为 foo 的会话
tmux kill-server # 删除所有的会话
除以上提到的快捷键以外,tmux 还有许多其他的快捷键和命令,使用前缀快捷键 ⌃b
加 ?
可以查看所有的快捷键列表,该列表视图为 tmux copy 模式,该模式下可使用以下快捷键(无需加 ⌃b
前缀):
⌃v
下一页Meta v
上一页 (tmux 快捷键为 Emacs 风格,这里的 Meta 键可用 Esc 模拟)⌃s
向前搜索q
退出 copy 模式
常见配置与问题
1、鼠标滚屏
tmux 默认配置中最糟糕的体验就是滚屏查看和文本复制(大家可以先试试看)。你需要先使用 ⌃b
[
快捷键进入 copy 模式,然后使用翻页、字符定位来选择需要的字符,效率远没有鼠标选择来的快。
因此 tmux 提供了一些个性化配置项来优化这些配置,首先在 shell 中运行 touch ~/.tmux.conf
新建用户配置文件。在文件中增加以下内容:
# 开启鼠标模式
set -g mode-mouse on
# 允许鼠标选择窗格
set -g mouse-select-pane on
# 如果喜欢给窗口自定义命名,那么需要关闭窗口的自动命名
set-option -g allow-rename off
# 如果对 vim 比较熟悉,可以将 copy mode 的快捷键换成 vi 模式
set-window-option -g mode-keys vi
配置文件修改完成后,可以 tmux kill-server
重启所有 tmux 进程,或者在 tmux 会话中使用 ⌃b
:
进入控制台模式,输入 source-file ~/.tmux.conf
命令重新加载配置。
2、鼠标复制
tmux 下开启鼠标滚屏后,复制文本有两种方式:
方法 1:使用
⌃b
z
进入窗格全屏模式,鼠标选择文本的同时按住 option 键⌥
,然后使用⌘c
进行复制;方法 2:开启 iTerm2 「在选择时复制」选项,即可实现自动选择复制。如下图:
3、tips
screen 是另外一款终端复用命令行,但他没有 tmux 好看好用;
tmux 有个 bug ,导致从它启动的 vscode 的复制粘贴快捷键会失效;
iTerm2 可以通过 「Preferences -> Profiles -> Keyboard Behavior -> Left option key acts as +Esc」将键盘的左侧 option 键映射为 Meta 键
另外,最近看到两篇不错的 awk、sed 命令入门,感兴趣的同学可以自己看一下。
https://www.cnblogs.com/kaiye/p/6275207.html
在mac中安装tmux的更多相关文章
- Mac中安装maven3.2.1
Mac中安装maven3.2.1 原文链接:http://blog.csdn.net/f_zongjian/article/details/24144803 本机OS X:10.9,未安装XCode, ...
- Mac中安装Vim7.4
Mac上的Vim Mac本身其实是预装了Vim的,但是目前的系统中都是Vim7.3版本的,而最新的Vim已经是7.4版了,因此为了能够使用最新版的vim,必须要对Mac中的vim要么升级,要么重装.在 ...
- Mac中安装node.js和npm
换了Mac需要安装noed.js和npm记录一下首先访问node.js官网(https://nodejs.org/en/download/) 点击下载完后,一路点安装 就安装完成了 然后打开-终端-输 ...
- 苹果MAC中安装并搭建Android开发环境的详细步骤
Android的开发平台搭建主要需要的工具有:Java虚拟机JDK.Eclipse.Eclipse插件ADT(Android Developer Tool)和Android开发包SDK,以下是具体的安 ...
- 在MAC中安装Compass的方法 (转)
在MAC中通过gem命令安装compass时会出异常,原因是compass版本更新了,一些运行时所用到的依赖软件的版本没能得到更新,故而出现错误.例如,用以下命令安装compass: $ gem in ...
- 在Mac中安装.Net Core的开发环境
在mac中部署dotnet core开发环境,我的MacOS版本号为OSX EI Capitan 10.11.6 1.安装brew homebrew官网推荐的安装命令如下: /usr/bin/ruby ...
- Mac中安装tensorflow(转)
当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST.MNIST是一个识别手写数字的程序 M ...
- MAC 中安装和使用express
其实window系统和mac的操作在大致上其实是想同的,只是一些细节的区别,以下对在mac下安装和使用express做简要介绍,如有不妥之处请各位大神指教. 一.首先要测试node和npm是否已经正确 ...
- python语言特点简介 以及在Windows以及Mac中安装以及配置的注意事项
正如前一篇随笔所提到的,python属于解释型语言 python语言有两个特点: 1.胶水语言(历史遗留问题,原来Perl语言作为Unix内置标准件,获得极大追捧,作为竞争者的python一开始是作为 ...
随机推荐
- centos 安装vsftp 服务
安装软件yum install vsftpd -y 启动测试 # systemctl start vsftpd# netstat -nultp | grep 21tcp 0 0 0.0.0.0:21 ...
- 基于ATtiny85微控制器制作一款四通道温度计
本文主要介绍了一款基于ATtiny85微控制器的四通道温度计,该温度计可以同时监测四个温度传感器的温度,并且实时在小型128x32 OLED液晶屏上进行显示. 该温度计可以用于任何需要监控多个温度点的 ...
- Celebrate it, this is my first time on this blog.
After hovered around the technology edge many years(so ashamed), I want to collected all the points ...
- P2018 消息传递[dp]
题目描述 巴蜀国的社会等级森严,除了国王之外,每个人均有且只有一个直接上级,当然国王没有上级.如果A是B的上级,B是C的上级,那么A就是C的上级.绝对不会出现这样的关系:A是B的上级,B也是A的上级. ...
- szwyadmin程序漏洞拿shell【方法笔记】
我们在Google中搜索关键词 关键字:inurl:szwyadmin/login.asp 任意打开一个搜索结果,打开登录界面后在地址栏中输入下面的代码: 代码: javascript:alert(d ...
- 微信小程序引入Vant组件库
前期准备 Vant Weapp组件库:https://youzan.github.io/vant-weapp/#/intro 1.先在微信开发者工具中打开项目的终端: 然后初始化一个package.j ...
- jquery操作按钮修改对应input属性
点击右侧的修改按钮,对应的input中的disabled和readonly得属性修改 $(".buttonxg button").click(function(){ $(this) ...
- HDFS节点及原理
HDFS节点角色: (1)namenode:1.用来存储HDFS的元数据信息,这里的元数据信息指的是文件系统的命名空间.启动时,将这些信息加载到namenode内存. 2.元数据信息也会在磁盘上保存成 ...
- Github的使用/git远程提交代码到Github
Github的使用/git远程提交代码到Github Github是全球最大的社交编程及代码托管网站 Git是一个开源的分布式版本控制系统 1.基本概念 Repository(仓库):仓库用于存放项目 ...
- HTML5自定义属性操作
一.自定义属性(html5标准)data-属性名称="属性值" 自定义属性的名称驼峰式命名规则需要用-隔开 自定义属性名称如果连在一起写,大写会自动转为小写 data-user=& ...