Tmux
简介
官网解释:tmux是一个终端多路复用器:它允许在单个屏幕上创建、访问和控制多个终端。tmux可以从屏幕上分离出来,继续在后台运行,然后再重新连接。
此版本在Open BSD、Free BSD、Net BSD、Linux、mac OS和Solaris上运行。
官网地址:tmux/tmux: tmux source code (github.com)
基本用法
安装
# Ubuntu 或 Debian
$ sudo apt-get install tmux# CentOS 或 Fedora
$ sudo yum install tmux# Mac
$ brew install tmux
启动
tmux
上面命令会启动 Tmux 窗口,底部有一个状态栏。状态栏的左侧是窗口信息(编号和名称),右侧是系统信息。
按下Ctrl+d
或者显式输入exit
命令,就可以退出 Tmux 窗口。
前缀键
Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b
,即先按下Ctrl+b
,快捷键才会生效。
举例来说,帮助命令的快捷键是Ctrl+b ?
。它的用法是,在 Tmux 窗口中,先按下Ctrl+b
,再按下?
,就会显示帮助信息。
然后,按下 ESC 键或q
键,就可以退出帮助。
会话管理
新建会话
第一个启动的 Tmux 窗口,编号是0
,第二个窗口的编号是1
,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。
使用编号区分会话,不太直观,更好的方法是为会话起名。
tmux new -s <session-name>
分离会话
Tmux 窗口中,按下Ctrl+b d
或者输入tmux detach
命令,就会将当前会话与窗口分离。
$ tmux detach
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。
tmux ls
命令可以查看当前所有的 Tmux 会话。
$ tmux ls # or $ tmux list-session
接入会话
tmux attach
命令用于重新接入某个已存在的会话。
# 使用会话编号 $ tmux attach -t 0# 使用会话名称 $ tmux attach -t <session-name>
杀死会话
tmux kill-session
命令用于杀死某个会话。
# 使用会话编号 $ tmux kill-session -t 0# 使用会话名称 $ tmux kill-session -t <session-name>
切换会话
tmux switch
命令用于切换会话。
# 使用会话编号 $ tmux switch -t 0# 使用会话名称 $ tmux switch -t <session-name>
重命名会话
tmux rename-session
命令用于重命名会话。
$ tmux rename-session -t 0 <new-name>
上面命令将0号会话重命名。
会话快捷键
下面是一些会话相关的快捷键。
Ctrl+b d
:分离当前会话。Ctrl+b s
:列出所有会话。Ctrl+b $
:重命名当前会话。
最简流程
- 新建会话
tmux new -s my_session
。 - 在 Tmux 窗口运行所需的程序。
- 按下快捷键
Ctrl+b d
将会话分离。 - 下次使用时,重新连接到会话
tmux attach-session -t my_session
。
窗格操作
划分窗格
tmux split-window
命令用来划分窗格。
# 划分上下两个窗格 $ tmux split-window# 划分左右两个窗格 $ tmux split-window -h
移动光标
tmux select-pane
命令用来移动光标位置。
# 光标切换到上方窗格 $ tmux select-pane -U# 光标切换到下方窗格 $ tmux select-pane -D# 光标切换到左边窗格 $ tmux select-pane -L# 光标切换到右边窗格 $ tmux select-pane -R
交换窗格位置
tmux swap-pane
命令用来交换窗格位置。
# 当前窗格上移 $ tmux swap-pane -U# 当前窗格下移 $ tmux swap-pane -D
窗格快捷键
下面是一些窗格操作的快捷键。
Ctrl+b %
:划分左右两个窗格。Ctrl+b "
:划分上下两个窗格。Ctrl+b <arrow key>
:光标切换到其他窗格。<arrow key>
是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓
。Ctrl+b ;
:光标切换到上一个窗格。Ctrl+b o
:光标切换到下一个窗格。Ctrl+b {
:当前窗格与上一个窗格交换位置。Ctrl+b }
:当前窗格与下一个窗格交换位置。Ctrl+b Ctrl+o
:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。Ctrl+b Alt+o
:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。Ctrl+b x
:关闭当前窗格。Ctrl+b !
:将当前窗格拆分为一个独立窗口。Ctrl+b z
:当前窗格全屏显示,再使用一次会变回原来大小。Ctrl+b Ctrl+<arrow key>
:按箭头方向调整窗格大小。Ctrl+b q
:显示窗格编号。
窗口管理
除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。
新建窗口
tmux new-window
命令用来创建新窗口。
$ tmux new-window# 新建一个指定名称的窗口 $ tmux new-window -n <window-name>
切换窗口
tmux select-window
命令用来切换窗口。
# 切换到指定编号的窗口 $ tmux select-window -t <window-number># 切换到指定名称的窗口 $ tmux select-window -t <window-name>
重命名窗口
tmux rename-window
命令用于为当前窗口起名(或重命名)。
$ tmux rename-window <new-name>
窗口快捷键
下面是一些窗口操作的快捷键。
Ctrl+b c
:创建一个新窗口,状态栏会显示多个窗口的信息。Ctrl+b p
:切换到上一个窗口(按照状态栏上的顺序)。Ctrl+b n
:切换到下一个窗口。Ctrl+b <number>
:切换到指定编号的窗口,其中的<number>
是状态栏上的窗口编号。Ctrl+b w
:从列表中选择窗口。Ctrl+b ,
:窗口重命名。
其他命令
下面是一些其他命令。
# 列出所有快捷键,及其对应的 Tmux 命令 $ tmux list-keys# 列出所有 Tmux 命令及其参数 $ tmux list-commands# 列出当前所有 Tmux 会话的信息 $ tmux info# 重新加载当前的 Tmux 配置 $ tmux source-file ~/.tmux.conf
Ranger
简介
官方解释:ranger是一个带有VI密钥绑定的控制台文件管理器。它提供了一个简洁美观的curses界面,并提供了目录层次结构视图。它配备了rifle,这是一种文件启动器,能够自动找出要用于何种文件类型的程序。
官房链接:ranger/ranger: A VIM-inspired filemanager for the console (github.com)
安装
ubuntu 安装命令如下
apt install ranger
最终在终端下输入ranger即可打开程序了
使用
使用h
,j
,k
,l
来进行光标的移动,来穿越在不同的文件夹中
使用q
进行退出程序,使用S
来进行当前光标所在的文件夹中(进入文件夹后终端下执行exit
命令重新回到ranger程序当中去)
配置
使用ranger --copy-config=all
将在~/.config/ranger
中生成一系列配置文件
- rc.conf 常用于设置选项和绑定快捷键.(最常用)
- scope.sh 常用于设置文件的预览方式
- rifle.conf 常用于设置使用那个软件来打开文件
- commands.py python文件,增强和改进ranger的各种功能
ranger --copy-config=all
rc.conf
-选项设置和快捷键commands.py
-能通过:
执行的命令commands_full.py
-全套命令rifle.conf
-指定不同类型的文件的默认打开程序scope.conf
-负责各种文件预览
注意:如果要使用~/.config/ranger
目录下的配置生效,需要把RANGER_LOAD_DEFAULT_RC
变量设置为false
bash
echo "export RANGER_LOAD_DEFAULT_RC=false">>~/.bashrczsh
echo "export RANGER_LOAD_DEFAULT_RC=false">>~/.zshrc
可选配置(推荐)
修改配置文件~/.config/ranger/rc.conf
- 显示边框
set draw_borders both
- 显示序号
set line_numbers true
- 序号从1开始
set one_indexed true
配置图标
git clone https://github.com/alexanderjeurissen/ranger_devicons ~/.config/ranger/plugins/ranger_devicons
echo "default_linemode devicons" >> $HOME/.config/ranger/rc.conf
效果
配置文本编辑器
设置默认为nvim
# bash
echo export EDITOR=/usr/bin/nvim >> ~/.bashrc
# zsh
echo export EDITOR=/usr/bin/nvim >> ~/.zshrc
快捷键
文件管理器操作
文件管理器操作 | 作用 |
---|---|
h | 返回上一层 |
l | 进入文件 |
j | 向下 |
k | 向上 |
Enter | 打开文件 |
q | 退出 |
获得帮助
您可以在使用Ranger时获得帮助
字符 | 作用 |
---|---|
m | 打开护林员的手册页 |
k | 打开键绑定列表 |
c | 打开可用命令和描述的列表 |
s | 打开设置及其当前值的列表 | |
删除
按键 | 说明 |
---|---|
dD 或者 F8 | 删除条目(文件或者文件夹),或者 : + delete 。 |
DD | 将条目移动到回收站里。 |
新建
按键 | 说明 |
---|---|
F7 | 新建文件夹,等同于 :mkdir 。 |
INSERT | 新建文件,等同于 :touch 。 |
重命名
按键 | 说明 |
---|---|
cw | 重命名(含后缀名) |
I | 重命名,光标在最前 |
A | 重命名,光标在最后(含后缀名) |
a | 重命名,光标在最后(不含后缀名) |
复制
按键 | 说明 |
---|---|
yy 或者 F5 | 复制 |
ya | add 模式,添加光标处文件到复制队列中(文件夹无效)。 |
yr | remove 模式,从复制队列中移除光标处文件(文件夹无效)。 |
yt | toggle 模式,切换光标处文件是否在复制队列中(文件夹无效)。 |
yk | 将光标处文件和上一文件添加到复制队列中(文件夹无效)。 |
yj | 将光标处文件和下一文件添加到复制队列中(文件夹无效)。 |
ygg | 将光标处到顶端的所有文件添加到复制队列中(文件夹无效) |
yG | 将光标处到底端的所有文件添加到复制队列中(文件夹无效) |
剪切
按键 | 说明 |
---|---|
dd 或者 F6 | 剪切 |
da | add 模式,同复制。 |
dr | remove 模式,同复制。 |
dt | toggle 模式,同复制。 |
dk | 同复制 |
dj | 同复制 |
dgg | 同复制 |
dG | 同复制 |
ud 或者 uy | 取消剪切 |
粘贴
按键 | 说明 |
---|---|
pp | 粘贴,默认 append 模式 |
pP | append 模式,如果该目录中有同名条目,则在条目后面加上 _ 、_0 、_1 ……。如果条目是文件,则在文件后缀名后加入。 |
po | overwrite 模式,如果该目录中有同名条目,则覆盖原来的条目。 |
pO | append 模式 + overwrite 模式。 |
pl | 粘贴为符号链接,不在状态栏显示目标条目的相对路径。 |
pL | 粘贴为符号链接(相对路径),在状态栏显示目标条目的相对路径。 |
phl | 粘贴为硬链接 |
pht | 粘贴为硬链接的子目录(hardlinked subtree) |
搜索
按键 | 说明 |
---|---|
/ | 打开搜索框,输入要搜索的字符串,回车后开始搜索。 |
f | 查找,等同于运行满足条件的文件或者打开满足条件的文件夹。 |
zf | 与命令行 filter 作用一样,只显示符合条件的条目,区分大小写。 |
n N | 查找下一个搜索结果 查找上一个搜索结果 |
c + 对应字母 | 通过对应属性依次遍历,如:ca :通过 atime 属性依次遍历cc :通过 ctime 属性依次遍历ci :通过 mimetype 属性依次遍历cm :通过 mtime 属性依次遍历cs :通过 size 属性依次遍历ct :通过 tag 属性依次遍历 |
相关插件
ubuntu
sudo apt-get install caca-utils # img2txt 图片
sudo apt-get install highlight # 代码高亮
sudo apt-get install atool # 存档预览
sudo apt-get install w3m # html页面预览
sudo apt-get install mediainfo # 多媒体文件预览
sudo apt-get install catdoc # doc预览
sudo apt-get install docx2txt # docx预览
sudo apt-get install xlsx2csv # xlsx预览
LazyGit
简介
官方解释:git命令的简单终端UI,使用gocui库在Go中编写。
官方链接:jesseduffield/lazygit: simple terminal UI for git commands (github.com)
安装
ubuntu
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
执行lazygit
即可启动
可以添加别名
echo "alias lg='lazygit'" >> ~/.zshrc
效果:
可以使用数字键或是tab
或是h
和l
切换标签
之后在对应tab中使用?
查看帮助文档学习相应操作
参考链接:
https://www.ruanyifeng.com/blog/2019/10/tmux.html
https://www.zssnp.top/2021/06/03/ranger/#post-comment