linux tmux的经验总结

背景

linux下工作环境,经常见到打开几十个终端,而且不舍得关闭的情况。即使redhat支持终端标签页,redhat支持多个工作区;但仍显得十分混乱。
终端的layout布局位置,不能保存。为了保持操作环境的整洁,经常出现关闭后又一一还原打开的情况。
于是,需要一个可以后台维持的终端工具(这个工具,就是tmux),而且可以存储加载终端的layout布局位置;这样就可以随时调取/隐藏(tmux叫attach/detach),得到期望的并且是当前唯一的终端界面。

另外,网上说,tmux也支持ssh登录界面的保存;这相当于实现了一个功能:一键打开n个ssh操作终端。

主要操作实现

安装

参考:
Tmux 速成教程:技巧和调整
http://blog.jobbole.com/87584/

概念了解

  • session(类似一个针对终端的project name)
  • window(类似终端的标签页)
  • pane(终端的分屏,这个feature挺重要的)
  • 复制模式(因为不追求丢弃鼠标的全键盘操作,所以不细看tmux这部分内容了;后来体验几天发现,复制模式还是有必要了解,依靠鼠标,一些操作无法实现)
  • tmux最新版[当前使用的是tmux 2.5版本]和老版本的命令,是有区别的,所以百度的很多命令是不适用的。

快捷键

首先,默认终端里,输入tmux,就进入了tmux的界面;tmux的界面与默认终端界面是一致的。只有进入tmux界面,才能使用tmux的快捷键;虽然,默认终端下,也支持tmux操作,但没有快捷键支持啊。

快捷键是可以定制的。

常用快捷键/命令需求 描述
开始tmux 终端命令:tmux
ctrl+b prefix,命令的前缀
新建一个session(会话) 终端命令:tmux new -s projectxxx
脱离detach当前session ctrl+b d
加入attach一个session 终端命令:tmux attach -t projectxxx
查看tmux后台的session 终端命令:tmux ls
关闭一个session tmux里直接exit,或者终端命令:tmux kill-session -t projectxxx
新建一个window ctrl+b c
跳转至windows #1 ctrl+b 1
垂直分屏 ctrl+b %
水平分屏 ctrl+b “
关闭某个分屏 直接exit即可,或者ctrl+b x
分屏间的光标移动 ctrl+b 上下左右按键

参考:
Tmux常用快捷键以及我会常到的一些问题汇总 - piperck - 博客园
http://www.cnblogs.com/piperck/p/4992159.html

tmux重启后恢复终端layout界面的方法

注意:tmux是不支持重启后恢复终端layout界面的。只要不重启,tmux是一直后台执行的。
当然,我需要tmux在重启后,仍有恢复终端layout的能力。方法参考:
自动给tmux现场做备胎
https://segmentfault.com/a/1190000006232298

唯一需要补充的就是,tmux 插件的安装,ctrl+b r之后,没有任何信息提示,等插件安装完成后,才会有安装已完成的信息。
另外,插件也可以一个个手动安装,也不麻烦。

功能 描述
保存tmux的设置环境 ctrl+b ctrl+s
加载tmux的最新设置环境 ctrl+b ctrl+r

如果有多个用户,比如admin/qilei等

单独一个tmux,打开多用户的终端,是没有问题。只不过保存恢复的操作,会有问题。解决办法如下:

  1. 先终端进入期望用户;然后再执行tmux。
  2. tmux的配置目录,需要复制到各个用户主目录里。

新建windows或者pane(分屏),保留目录路径

bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind " split-window -c "#{pane_current_path}"

复制模式

Ctrl+b [
进入复制模式,空格标记复制开始,回车结束复制。
同样,适用于终端上下屏幕的移动浏览。按q,就退出复制模式。

Ctrl+b ]
粘贴最后一个缓冲区内容

~/.tmux.conf里增加下句,使复制模式类似vi操作
setw -g mode-keys vi
为了更适应vi操作,

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

unbind-key -T copy-mode-vi v
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection # Yank selection in copy mode.

支持鼠标模式

set -g mouse on

这样就可以支持鼠标滚轮/pagedown等普通操作了。

窗口列表居中(否则session和windows名称会重叠)

set -g status-justify centre

其它

刚刚使用,还未考虑更细节的东西。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章