HOW-如何使用 tmux + zhs
数据安全、计算安全、编程安全小白
关注他
1 人赞同了该文章
什么是Tmux
建议使用tmux:Terminal Multiplexer。
是一个类似iTerm的terminal终端工具
优点:
- 多个session,可以保持回话。运行中的程序不会因为网络断开连接(断网或者个人主机关机之类)而被shut down
- 每一个session里面可以创建不同的window。每一个window处理不同任务
- 每一个window里面可以创建多个pane。多端同窗口协同工作。跑多线程或者Client-Server调试时十分方便
安装
- Mac
brew install tmux |
- Linux
sudo apt-get install tmux |
到这里安装好tmux之后,命令行敲tmux进入(默认开启一个新的session)即可使用默认的tmux配置,包括快捷键等。
这里贴一个表格,涉及到常用的tmux指令:
P.S. 通常默认的$prefix 为 ctrl+a 或者 ctrl+b
优化自定义配置
可以自动修改~/.tmux.conf 来自定义tmux的配置,包括配色和快捷键等
这里推荐直接使用oh-my-tmux,如下链接
https://github.com/gpakosz/.tmuxgithub.com/gpakosz/.tmux
$ cd |
按照github链接走完,需要注意额外敲一下:
tmux source-file ~/.tmux.conf |
来使得配置生效
支持鼠标点击和复制
tmux可以设置允许鼠标交互,窗口切换以及log上下滑可以比较方便。可以按照如下方式设置:
- 进入tmux终端,敲下prefix键(我的是ctrl+a)
- 输入 :
- 输入 set -g mouse on, 回车即可
不过一个小的隐患是,上述支持鼠标后,在tmux的terminal上选择+复制文字,比如log信息,就失效了。最简单的方式是要将鼠标模式关闭。推荐大家熟练使用快捷键进行窗口切换,避免额外的操作。
P.S. 鼠标模式下,按住shift(windows)或者Option(Mac),这时就可以鼠标选中复制
进阶优化配置
按照上面的步骤,我们现在已经可以成功地启用多会话,多窗口,来进行会话的保持(避免因为断开连接而丢失历史记录或者任务中断。
但是在每一个tmux窗口中,使用的仍然是最基础的bash,如何结合更加user-friendly的zsh,并添加更加好用的插件(如自动补全zsh-autosuggestions)呢?
1. 首先需要安装zsh
用户根目录执行如下命令。具体细节可见下面的Github链接~
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
https://github.com/ohmyzsh/ohmyzshgithub.com/ohmyzsh/ohmyzsh
2. 添加喜欢的插件(这里以zsh-autosuggestions为例)
这里需要把要安装的插件的代码下载到oh-my-zsh的plugin目录中,执行下面命令即可
git clone https://github.com/zsh-users/zsh-autosuggestions ${PathToOhMyZshPlugin} |
接着,修改~/.zshrc
文件,声明上述插件:
plugins=(zsh-autosuggestions) |
最后,使上述修改生效:
source ~/.zshrc |
3. 修改默认SHELL到tmux中
注意这一步如果有sudo权限,可以直接修改系统的默认SHELL
chsh -s /usr/bin/zsh |
但是如果没有sudo权限,或者只是想本人生效,可以在.tmux.conf
中进行添加如下:
# set shell |
使上述修改生效:
tmux source-file ~/.tmux.conf |