今天部署测试服务器环境

使用到了tmux 刚开始我把tmux想象成了像omzsh这种shell 但是被指出是错误的,tmux类似于在shell里面的软件。我还真是第一次接触到这个概念。

首先安装

brew install tmux

我在安装的时候并没有遇到什么问题。

1. open session

$ tmux new-session -s basic
或者
$ tmux new -s basic

-s参数表示session名称,如果不加-s参数,那么Tmux默认会新建一个以数字(下标从0开始)命名的session,并默认打开一个window。打开一个session后,后续的所有控制Tmux本身的快捷键都需要加前缀,默认是 Ctrl+b ,以下把前缀按键称为Prefix。

2. detach session 
想要暂时离开Tmux,回到终端环境时,可以通过快捷键 Prefix+d (d for detach)。要注意的时,即使是detach的状态,Tmux中在运行的程序还会继续运行。想要回到Tmux session时,只需执行:

$ tmux attach -t basic

-t参数可以指定要attach的session。

3. list session 
终端中执行 tmux ls (ls for list session)可以列出当前有多少个session。如果已经在session中,执行 Prefix+s (s for session)可以列出当前有多少个session,并且可通过上、下键选择要进入的session。

4. kill session 
要真正关闭一个session,可以在终端下执行命令 tmux kill-session -t basic ,其中-t参数表示session名称。

二. window 
如果说session是个不可见的东西,那么window就是我们输入、执行命令的地方。一个session可以包含多个window。把window类比成iTerm2中的标签应该就理解了。

1. 创建window 
在创建session的时候默认会创建一个以"数字下标+bash"命名的window,并且名称随着bash中执行的不同命令而变化。在新建session时可以通过-n参数指定默认打开的window名称,比如通过 tmux new -s basic -n win 命名一个win名称的window。也可以随时通过 Prefix+, 来修改window名称。

2. 切换window 
类似标签,我们可以通过一些快捷键在同一个session下的多个window之间切换。比如:

Prefix+p (p for previous):切换到上一个window。 
Prefix+n (n for next): 切换到下一个window。 
Prefix+0 : 切换到0号window,依次类推,1、2、3... 
Prefix+w (w for windows): 列出当前session所有window,通过上、下键可以选择切换到指定window。

3. 关闭window 
Prefix+& : 关闭当前window。

三. pane 
一个window可以切割成多个pane,也就是所谓的分屏,算是Tmux的核心功能之一。

1. 分屏 
Prefix+% : 垂直分屏,用一条垂线把当前窗口分成左右两屏。 
Prefix+" : 水平分屏,用一条水平线把当前窗口分成上下两屏。

2. 切换pane 
默认情况下,被选中(激活状态下)的pane会被绿色边框高亮突显出来。 
Prefix+o : 依次切换当前窗口下的各个pane。 
Prefix+Up|Down|Left|Right : 根据按箭方向选择切换到某个pane。 
Prefix+Space (空格键): 对当前窗口下的所有pane重新排列布局,每按一次,换一种样式。 
Prefix+z : 最大化当前pane。再按一次后恢复。

3. 关闭pane 
Prefix+x : 关闭当前使用中的pane。

关于Tmux的三个核心概念(session、window和pane)及其基本用法已经介绍完毕。接下来的是一些个性化配置和奇技淫巧,包括重新绑定快捷键、自定义快捷键、UI样式、鼠标支持、复制粘贴等等,这些可配置的高级功能也是Tmux受人推崇的原因。Tmux配置文件推荐放在~/.tmux.conf文件中,避免某个用户修改配置影响到其他用户,修改配置文件后要经过reload操作才会在已打开session中生效。

一. 重新绑定快捷键 
Tmux的很多默认配置不够友好,需要个人重新定义。

unbind C-b
set -g prefix C-a bind C-a send-prefix bind r source-file ~/.tmux.conf \; display "tmux.conf reload!" bind | split-window -h
bind - split-window -v bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R set -g base-index 1
set -g pane-base-index 1

第1-2行表示重新定义Prefix,把默认的 Ctrl+b 换成 Ctrl+a ,便于单手操作。 
第4行重新定义 Ctrl+a 组合键,当 Prefix + Ctrl+a 按下后,等同于原先 Ctrl+a 功能,解决Ctrl+a被设置为Prefix后已有快捷键失效的问题,也就是说只要按下两次 Ctrl+a ,就能实现原先终端下回到行首的功能。 
第6行定义新的快捷键 Prefix+r ,重新加载Tmux配置文件,避免每次要进入命令模式reload配置。 
第8-9行重新定义分屏快捷键。使用 Prefix+| 代替 Prefix+% 实现垂直分屏,使用 Prefix+- 代替 Prefix+" 实现水平分屏。|和-的符号本身就可以表示分屏线形状,非常直观。 
第11-14行重新定义上下左右方向键,遵循vi习惯。定义以后,任何需要上下左右方向键的场景都可以用hjkl替代。 
第16行表示将window的起始下标设为1。因为标准键盘的0在9后面, Prefix + 0/1/2 ...切换不便。 
第17行表示将pane的起始下标设为1。理由同上。

二. 鼠标支持

set-window-option -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

第1行表示启用鼠标。虽然Tmux推荐用键盘完成所有操作,但是对现代开发人员来说,纯键盘操作的习惯并非那么容易养成,因此启用鼠标配置成为标配。 
第2行表示支持鼠标选择pane。 
第3行表示支持鼠标调整pane大小。 
第4行表示支持鼠标选择window。

三. UI样式调整

setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright set -g status-justify left setw -g monitor-activity on

第1-3行表示状态栏中window标签的高亮样式,默认是绿底黑字,设置后当前window红底白字显示。 
第5行表示状态栏中window列表左对齐排列。 
第7行表示非当前window有内容更新时显示在状态栏。

四. 复制粘贴 
默认情况下,按 Prefix+[ 进入复制模式,按回车(Enter)退出复制模式。可以通过配置在复制模式中使用vi习惯操作:

setw -g mode-keys vi

在复制模式下,按空格键(Space)开始复制,按回车(Enter)完成复制,并退出模式,按 Prefix+] 粘贴。这些快捷键也可以通过以下配置进行修改,使操作更加靠近vi。

unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection

第1-2行表示重新绑定Escape键, Prefix+Escape 为进入复制模式。 
第3-4行表示重新绑定p键, Prefix+p 为粘贴。 
第5行表示重新绑定v键, Prefix+v 为开始复制。 
第6行表示重新绑定y键, Prefix+y 为完成复制。

要查看当前复制的内容,可以在 Prefix+: 后出现的命令行中输入 show-buffer ,输入 list-buffers 可以列出所有的复制历史内容。 
关于复制粘贴,更深入的话题是Tmux和系统剪贴板之间的交互,Linux可以使用xclip,Mac可以使用tmux-MacOSX-pasteboard,不过我没有试验成功,暂时可以通过ALT + 鼠标复制内容到系统剪贴板。

五. 多屏操作 
默认情况下,一个window上只有一个pane被激活,接收键盘交互。但是某些场景下需要在多个pane中执行相同的操作,比如同时修改两台或更多台远程机器的nginx配置,这时候可以在分屏后按 Prefix+: 进入命令模式,输入 set synchronize-panes ,即可进入批量操作模式,要退出批量操作模式,再次输入 set synchronize-panes 即可。

此文转自http://ju.outofmemory.cn/entry/126553

Tmux常用快捷键以及我会常到的一些问题汇总的更多相关文章

  1. [daily][tmux] tmux常用快捷键

    介绍 什么是tmux? Terminal Multiplexer. 1. 如果你是linux用户,tmux就是screen的alternative. 2. 如果你是windows用户,tmux就是一个 ...

  2. [转载]tmux常用快捷键

    Hello World 窗口管理只是 tmux 功能的一小部分,另一个很有用的功能就是,连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开之后继续工作,下次 ...

  3. tmux常用快捷键

    首先输入命令开始. $ tmux 然后,基本组合 Ctrl+b(同时按下ctrl和b),按完松开 松开后,按%(即同时按下shift和5),是水平分割 按“(即同时按shift和'),是纵向分割 按上 ...

  4. Tmux常用快捷键及命令

    Exported from workflowy! tmux session start/create session- tmux- tmux new-session -s portage listin ...

  5. Tmux 常用快捷键

    Ctrl-b : Send the prefix key through to the application. " : Split the current pane into two, t ...

  6. Eclipse常用快捷键大全1

    Eclipse常用快捷键大全 1.ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字 ...

  7. Eclipse 00: 常用快捷键

    Eclipse常用快捷键 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2 显示搜索 ...

  8. Sublime编辑器上的Linux Vim插件常用快捷键

    Sublime编辑器上的 Vim 插件常用快捷键 vim 的设置: 在Reference-> User Settings(首选项--> 设置用户) 选项,点击进入配置文件编辑状态,默认的用 ...

  9. eclipsec常用快捷键

    Eclipse常用快捷键 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2 显示搜索 ...

随机推荐

  1. ASP.NET26 个常用性能优化方法

    数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...

  2. 瞎折腾之 Lucene.Net + MVC 搜索功能(上)

    前言 首先,关于Lucene.Net 的文章已经很多了.我这次决定写出来只是为了练练手,虽然在别人看来没什么用,但是自己确实是手动实践了一把.我个人觉得还是有意义的.爱折腾.敢于实践.才能有所收获,才 ...

  3. LA 2965 Jurassic Remains

    这是我做的第一道状态压缩的题目,而且我自己居然看懂了,理解得还算透彻. 题意:给出若干个大写字母组成的字符串,然后选取尽量多的字符串使得这些字母出现偶数次. 最朴素的想法,穷举法:每个字符串只有选和不 ...

  4. smarty分页模板(用模板语法写分页)

    分页是一个我们经常要用到的.比较基本的小功能,你可以通过定义一个方法或类来对它进行封装.重用.而本文则是通过利用smarty独有的语法,以模版的方式进行封装,从而达到同样的目的. 下面开始具体实现步骤 ...

  5. linux 命令部分说明

    shell 文件头格式   #! /bin/sh 定义变量  dir_tmp=/tmp/xxx 级联创建 mkdir -p /etc/aaa/bbb 阻塞命令 等待用户输入回车  继续    read ...

  6. IE6对CSS支持Bug收集

    1.IE6双外边距 在IE6下,如果对元素设置了浮动,同时又设置了margin-left或者margin-right,margin值会加倍. 例如,设置margin-left:10px在IE6下会显示 ...

  7. 如何定义 Java 中的方法

    所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.p ...

  8. Spring3.0将全面支持REST

    Rod Johnson上个月底说,Spring 3.0全面支持REST风格的Web服务. "We're really seeing extensive interest and growth ...

  9. android定时三种方式

    一.采用Handler与线程的sleep(long)方法二.采用Handler的postDelayed(Runnable, long)方法三.采用Handler与timer及TimerTask结合的方 ...

  10. 恢复SD卡错删数据

           对于众多米粉来说,手机里存储的很多资料都非常宝贵,如果不小心删除了,想要重新收集这些资料就显得非常困难.有道是千金易得,数据无价,特别是一些珍贵照片之类的充满回忆的数据,丢失了甚至会抱憾 ...