tmux 快速上手
tmux 介绍
截图
dwm + alacritty + tmux + neovim + ranger:

下载
tmux 可以说是一款 TUI 开发人员不可或缺的终端复用神器。
$ yay -S tmux
在终端输入以下命令即可进入 tmux:
$ tmux
概念
tmux 中有以下一些概念:
- server 服务
- session 会话
- window 窗口
- pone 窗格
每次输入 tmux 命令后就会启动一个 tmux 服务和 tmux 会话。
一个 tmux 会话可以有多个窗口,一个窗口可以有多个窗格。
我们最常使用的就是 tmux 中的窗口和窗格。
按键
prefix
和 vim 类似,tmux 中也有一个前缀键的概念,默认是 <c-b>
默认所有的快捷键在按下之前都必须先按下 prefix 键位才会生效。
比如:
ctrl+b w
ctrl+b s
会话
| 按键 | 描述 |
|---|---|
| s | 查看所有会话 |
| d | 关闭当前会话 |
| $ | 重命名会话 |
窗口
| 按键 | 描述 |
|---|---|
| c | 新建窗口 |
| & | 关闭窗口 |
| w | 窗口列表 |
| n | 下一个窗口 |
| p | 上一个窗口 |
| l | 上一次窗口 |
| 1-9 | 切换到指定窗口 |
| , | 窗口重命名 |
按下 prefix & 后会提醒你是否关闭窗口,按 y 或 n 即可。
窗格
| 按键 | 描述 |
|---|---|
| % | 水平窗格 |
| " | 垂直窗格 |
| x | 关闭窗格 |
| ; | 向上切换窗格 |
| o | 向下切换窗格 |
| 方向 | 向上下左右移动 |
| { | 与上一个窗格交换位置 |
| } | 与下一个窗格交换位置 |
| c-o | 向前移动窗格位置,第一个变最后一个 |
| a-o | 向后移动窗格位置 ,最后一个变第一个 |
| ! | 将当前窗格拆分为独立窗口 |
| z | 全屏显示当前窗格,再按一次便会原来大小 |
| c-方向 | 调整窗格大小 |
| q | 显示窗格编号 |
配置
默认键
使用以下命令将所有 tmux 的默认按键命令导出到一个文件中,方便后期修改:
$ tmux list-keys > /tmp/tmux_default.txt
插件
tmux 和 vim 类似,都是用插件管理插件。
首先需要下载 tmux 插件管理器 tpm:
$ https://github.com/tmux-plugins/tpm.git
下载完成后使用 vim 打开 ~/.tmux.conf,并且按下大 G。
按下 i 并填入以下内容,安装我微调之后的 tmux-power 或原本 tmux-power 状态栏插件。
$ set -g @plugin 'askify/tmux-power'
run '~/.tmux/plugins/tpm/tpm'
添加完成后重新运行 tmux 服务,然后按下快捷键即可下载插件:
prefix + I : 下载插件
prefix + U : 更新插件
prefix + alt + u:卸载插件(需要将插件从 ~/.tmux.conf 文件中注释)
下载完成的插件都在 ~/.tmux/plugins/ 目录中。
我的配置
下面是我的 tmux 配置,对原本某些按键做了修改,让其更符合我个人的使用习惯:
# support mouse
set -g mouse on
# overtime time : ms
set -sg escape-time 1
# start window index
set -g base-index 1
# start pane index
setw -g pane-base-index 1
# == reload ==
bind r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded."
# == leader ==
unbind C-b
set -g prefix C-t
# == unbind ==
unbind d
unbind &
unbind '"'
unbind %
unbind C-s
unbind C-v
unbind C-u
unbind C-d
unbind C-k
unbind C-j
unbind C-h
unbind C-l
unbind k
unbind j
unbind h
unbind l
unbind f
unbind q
unbind t
unbind Tab
unbind p
unbind n
unbind c
# == pane ==
# split
bind C-s splitw -v
bind C-v splitw -h
# swap
bind C-u rotate-window
bind C-d rotate-window -D
# select
bind C-k selectp -U
bind C-j selectp -D
bind C-h selectp -L
bind C-l selectp -R
# full screen
bind c-f resize-pane -Z
# close
bind c-q kill-pane
# resize
bind k resizep -U 10
bind j resizep -D 10
bind h resizep -L 10
bind l resizep -R 10
# == window ==
bind t new-window
bind Tab last-window
bind p previous-window
bind n next-window
bind c kill-window
# == theme ==
# follow terminal color
set -g status-style bg=default
# status bar position
set -g status-position bottom
set -g @tmux_power_theme '#87D7FF'
# == plugin ==
set -g @plugin 'askify/tmux-power'
run '~/.tmux/plugins/tpm/tpm'
外部资源
tmux 快速上手的更多相关文章
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 快速上手Unity原生Json库
现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- 快速上手seajs——简单易用Seajs
快速上手seajs——简单易用Seajs 原文 http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...
- Git版本控制Windows版快速上手
说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- Netron开发快速上手(二):Netron序列化
Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...
- Netron开发快速上手(一):GraphControl,Shape,Connector和Connection
版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...
随机推荐
- Spring 配置文件 ?
Spring 配置文件是个 XML 文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用.
- NULL 是什么意思 ?
NULL 这个值表示 UNKNOWN(未知):它不表示""(空字符串).对 NULL 这 个值的任何比较都会生产一个 NULL 值.您不能把任何值与一个 NULL 值进行比 较,并 ...
- 一个注解@Recover搞定丑陋的循环重试代码
使用背景 在实际项目中其中一部分逻辑可能会因为调用了外部服务或者等待锁等情况下出现不可预料的异常,在这个时候我们可能需要对调用这部分逻辑进行重试,代码里面主要就是使用for循环写一大坨重试的逻辑,各种 ...
- 《剑指offer》面试题2:实现Singleton 模式
面试题2:实现Singleton 模式 题目:设计一个类,我们只能生成该类的一个实例. 只能生成一个实例的类是实现了Singleton (单例)模式的类型.由于设计模式在面向对象程序设计中起着举足 ...
- 顺利通过EMC实验(9)
- js常用的函数库
阻止冒泡.默认行为.事件捕获 /* funname preventEventPropagation * desc 阻止冒泡事件&阻止默认行为&阻止事件捕获 * params {name ...
- Mybatis实现批量删除数据
Mybatis实现批量删除操作 学习内容: 1. 使用 2. 代码实现 2.1 UserMapper.java 接口 2.2 UserMapper.xml 总结: 学习内容: 1. 使用 这里通过动态 ...
- 2021年iOS 开发者账号申请-最新
前言 现在已经是2021年了,中国国内的互联网生态国家管控越来越严禁,国家反垄断法,未成年人游戏限制,整治娱乐圈不良文化,出台公民网络个人信息保护法,全网进行app 应用进行安全审查,等等等,无不意味 ...
- LC-19
19. 删除链表的倒数第 N 个结点 思路基本直接出来,双指针,IndexFast 和 IndexSlow 中间相隔 N - 1, 这样 IndexFast 到了最后,IndexSlow 自然就是倒数 ...
- java四种访问修饰符及各自的权限
1.public,即共有的,是访问权限限制最宽的修饰符.被public修饰的类.属性.及方法不仅可以跨类访问,而且可以跨包访问. 2. protected,即保护访问权限,是介于public和priv ...