Tmux 学习摘要2--配置

配置文件

系统范围的配置文件是 /etc/tmux.conf,而针对个人的配置文件在 ~/.tmux.conf

通过配置文件,可以定义新的快捷键,定义窗口、窗格布局等。

绑定 CAPS LOCK 键到 CTRL 键

在 OS X 上:打开 Keyboard preference panel->System Preference,按下 Modifier 键,然后将 CAPS LOCK 的动作改为 Control

在 Linux,需对键盘配置文件进行修改:

sudo vi /etc/default/keyboard

找到以 XKBOPTIONS 开头的行,添加 ctrl:nocaps 使 CAPS LOCK 成为另一个 CTRL 键,或者添加 ctrl:swapcaps 使 CAPS LOCK 键和 CTRL 两键的功能相互交换。 例如,修改后的内容可能为:

XKBOPTIONS="lv3:ralt_alt,compose:menu,ctrl:nocaps"

然后运行:

sudo dpkg-reconfigure keyboard-configuration

详细请参考 Emacs WIKI。

定义一个更加容易按的 PREFIX

CTRL-b 不太好按,如果已将 CAPS LOCK 重定义为 CTRL,CTRL-a 会好按的多(GNU-SCreen 的PREFIX 也是 CTRL-a)。

.tmux.conf 中的配置命令是 set-option ,或者简写为 set

将 tmux PREFIX 重新定义:

set -g prefix C-a

这里的 -g 开关是 global 全局的意思,表示该设置值作用于所有的 tmux 会话。

可以使用 unbind-key 命令,或者简写的 unbind 命令来取消之前的绑定,如取消之前的 PREFIX 绑定 CTRL-b

unbind C-b

因为重新绑定后,之前的绑定会自动取消,因此在本例中,没有必要用 unbind

当配置文件 .tmux.conf 修改后,tmux 并不会自动进行重新读取和执行,需要在 tmux 会话中,使用快捷键 PREFIX : 进入命令模式,并执行 source-file ~/.tmux.conf 来重新加载配置文件 。

修改发送命令的默认延时时长

向 tmux 发送命令的默认延时时长非常短,可能会导致与 Vim 等编辑器冲突。

可以将延时时长调高些,以提高操作响应能力:

set -sg escape-time 1

窗口的默认编号是从 0 开始的,由于键盘上 0 和 1 的排列位置相关较远,,最好将窗口设置成从 1 开始编号:

set -g base-index 1

set 命令是针对会话的配置命令,而针对窗口的配置命令是 set-window-option,或者简写为 setw。由于窗格是窗口中的事物,要将窗格的默认编号也设置成从1 开始,应该用 setw 命令:

setw -g pane-base-index 1

自定义按键、命令和用户输入

tmux 的大部分快捷键都过长,或者难以操作。应该将常用的快捷键重新进行设置。

创建一个重新加载配置文件的快捷键

每次修改配置文件后,以前都需要执行 source-file ~/.tmux.conf,可以将这一命令定义成一个快捷键 PREFIX r

bind r source-file ~/.tmux.conf

当重新加载后,最好要有消息提醒,可以用 display 命令在状态栏输出消息提醒。bind 命令可以绑定多条命令,各命令间用 \; 分开,如:

bind r source-file ~/.tmux.conf \; display "Reloaded!"

这样的绑定在使用时需要加前缀, 如果不要前缀,则:

bind-key -n C-r source-file ~/.tmux.conf

向会话内的应用发送 PREFIX

CTRL-a 也是 Vim, Bash 的快捷键,因此需要设置一个快捷键来向其它应用发送 CTRL-a

bind C-a send-prefix

绑定后,只需按两次CTRL-a 就能向其它应用程序发送 CTRL-a 了。

窗格分割命令

默认的分割命令很难记,绑定能形象记忆的快捷键:

bind | split-window -h #水平分隔
bind - split-window -v

窗格间的移动

窗格间默认可以用 PREFIX o 进行循环切换,或者用 PREFIX 方向键 进行切换。参照 Vim, 用 hjkl 进行切换:

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

同时设置用 PREFIX CTRL-hPREFIX CTRL-l 在窗口间进行切换移动:

bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

这里的 -r 开关是 repeatable 可重复的意思,表示只需按一次 PREFIX, 后面可多次连续按绑定键。默认的间隔时间是 500 毫秒,可以设置 repeat-time 来修改。

设计修改窗格大小

bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

禁用鼠标

在 tmux 2.1 以下版本:

setw -g mode-mouse off

在 tmux 2.1 及以上版本:

setw -g mouse off

外观风格

颜色配置

确保 Tmux 和终端都支持 256 色。

在终端中测试是否支持 256 色:

$wget http://www.vim.org/scripts/download_script.php?src_id=4568 -O colortest.pl
$perl colortest.pl -w

在 Linux 上,可能需要在 .bashrc 中添加:

[ -z "$TMUX" ] && export TERM=xterm-256color

Mac Snow Leopard 的终端应用只支持 16 色, 需安装 iTerm2 支持更多颜色, 在 iTerm2 中,打开 default profile,将 Terminal mode 修改成 xterm-256color, 同时确保终端支持 UTF-8。

为使 tmux 能显示 256 色:

set -g default-terminal "screen-256color"

修改颜色

修改状态栏颜色

set -g status-fg white
set -g status-bg black

修改窗口列表颜色

setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim

setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

修改窗格分隔栏颜色

set -g pane-border-fg green
set -g pane-border-bg black
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

定制命令行

set -g message-fg white
set -g message-bg black
set -g message-attr bright

定制状态栏

状态栏支持的变量

变量 | 描述

-----------------|

H | 本地主机名

h | 不含域名的主地主机名

F | 当前窗口符号

l | 当前窗口的索引号

P | 当前窗格的索引号

S | 当前会话名

T | 当前窗口的标题

W | 当前窗口的名称

| # 字符

(shell-command) | Shell 命令的首行输出

[attributes] | 颜色或属性值设置

总结

命令总结

命令 | 描述

----------------------------------|

set -g prefix C-a | 设置 PREFIX 键

set -sg escape-time n | 设置按 PREFIX 键后,等待按键的毫秒数。

source-file [file] | 重新加载配置文件

bind C-a send-prefix | 按两次 PREFIX 将向其它应用发送 PREFIX 键组合

bind-key [key][command] | 创建执行指定命令的快捷键,可简写为 bind

bind-key -r [key][command] | 创建执行指定命令的快捷键,可简写为 bind,该快捷键可在一次按下 PREFIX 后,进行多次连续键入

unbind-key [key] | 取消快捷键绑定,可简写为 unbind

display-message 或 display | 在状态栏显示信息

set-option [flags][option][value] | 为会话设置,使用 -g 开关为所有会话设置

set-window-option [option][value] | 设置窗口属性

set-a | 将设置值添加现有选项上,而不进行替换

来自 Pragmatic Tmux 的配置文件:

# workflows/tmux.conf
# Our .tmux.conf file

# Setting the prefix from C-b to C-a
set -g prefix C-a

# Free the original Ctrl-b prefix keybinding
unbind C-b

#setting the delay between prefix and command
set -sg escape-time 1

# Ensure that we can send Ctrl-A to other apps
bind C-a send-prefix

# Set the base index for windows to 1 instead of 0
set -g base-index 1

# Set the base index for panes to 1 instead of 0
setw -g pane-base-index 1

# Reload the file with Prefix r
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# splitting panes
bind | split-window -h
bind - split-window -v

# moving between panes
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# Quick pane selection
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# Pane resizing
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# mouse support - set to on if you want to use the mouse
setw -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off

# Set the default terminal mode to 256color mode
set -g default-terminal "screen-256color"

# enable activity alerts
setw -g monitor-activity on
set -g visual-activity on

# set the status line‘s colors
set -g status-fg white
set -g status-bg black

# set the color of the window list
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim

# set colors for the active window
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

# pane colors
set -g pane-border-fg green
set -g pane-border-bg black
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

# Command / message line
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# Status line left side
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"

set -g status-utf8 on

# Status line right side
# 15% | 28 Nov 18:15
set -g status-right "#(~/battery Discharging) | #[fg=cyan]%d %b %R"

# Update the status bar every sixty seconds
set -g status-interval 60

# Center the window list
set -g status-justify centre

# enable vi keys.
setw -g mode-keys vi

# Open panes in the same directory using the tmux-panes script
unbind v
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m

# Maximize and restore a pane
unbind Up
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp

# Log output to a text file on demand
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"

参考资源:

tmux: Productive Mouse-Free Development

原文地址:https://www.cnblogs.com/haiiiiiyun/p/12565418.html

时间: 2024-11-11 08:52:58

Tmux 学习摘要2--配置的相关文章

Tmux 学习摘要1--使用默认配置进行基本操作

tmux 是一个运行于 OS X 和 Unix 上的终端分屏软件 terminal multiplexer. 快捷键的表示及按键规则 CTRL-b: 同时按下 CTRL 键和 b 键 CTRL-R: 同时按下 CTRL.SHIFT 和 r 键 CTRL-b d: 同时按下 CTRL 键和 b 键,再松开,然后再迅速按下 d 键 安装 在 OS X 上: $ brew install tmux 在 Debian 和 Ubuntu 上: $ sudo apt-get install tmux 确定是

Tmux 学习摘要6--工作流

高效使用窗口和窗格 将窗格转变成窗口 将当前窗格升级为一个独立的窗口,使用快捷键 PREFIX !,此后,当前会话中会多出一个窗口. 将窗口转变成一个窗格 在命令模式下使用 join-pane 命令,该命令的格式为: join-pane -s [souce-window-no] -t [target-window-no] -s 和 -t 两个参数都可以忽略,表示为当前的窗口或窗格. 最大化窗格与还原 将当前窗格放大,放在一个独立的窗口中显示,查看完之后再还原. 实现此功能,先将当前的窗格通过 b

Tmux 学习摘要5--结对编程

使用 tmux 进行结对编程的两种方式: 创建一个新帐户.在该新用户下创建 tmux 开发环境,其他组员和你共享这个新帐户,并在其下工作. 使用 tmux 的 sockets,使得其他人能连接到你的 tmux 会话. 这两种方式本质上都有安全隐患:别人会看到你屏幕上的内容.因此,较好的方法是在 VPS 或虚拟机(VirtualBox + Vagrant)上搭建开发环境用于结对编程共享. 共享帐户下的结对编程 这是一种最简单的方法.先在一台主机上开启 SSH 访问,然后在上面安装和配置 tmux,

Tmux 学习摘要7--补遗

PREFIX ?: 列出所有的快捷键,它对应的命令行命令为 :list-keys. :list-commands 列出所有的 tmux 命令. :info 命令显示有关当前会话的信息:w. 将命令前缀改为 CTRL-SPACE 更加容易使用,但是输入法切换可能也会用这两个键,因此要进行修改设置. unbind C-b set -g prefix C-Space 方便切换到上一个窗口. bind-key L last-window :resize-pane -Z 命令将当前窗格进行最大化,当再次运

tmux学习与配置

 一. 主线教程 请根据下面链接中的教程进行学习 <https://my.oschina.net/am313/blog/865915> 重要的:这里提供了两种不同的配置方案,分别是1和2是一种,另一种是3,两者并不兼容,如果按照顺序依次配置,最后3会将1和2新添加的配置顶掉,请自行选择. 1. 直到链接中的“简易美化”一栏,这里出现了关于tmux的配置问题的坑,我们先按照如下方式进行配置: (1).若无配置文件,则创建配置文件:终端输入:touch ~/.tmux.conf (2).终端打开配

a byte of vim -- 学习摘要

说在前面的话 -- a byte of vim 是我见过的最介绍vim 最好的书,想了解强大的vim的人,或者是已经在使用vim而打算进一步了解的人,我感觉都应该看看这个,内容精炼但涵盖很广,--"vim为什么这么强大",当看完这本书时,我想你就能完全的了解了--此外,本书是一英文版,但很简单,学语言的同时学习英语很不多-- 附上最新版的下载链接 http://download.csdn.net/detail/wuzhimang/8933257  ,当然上官网才是硬道理 以下是自己针对

Jetty学习三:配置概览-需要配置什么

上一节讲述了怎么配置Jetty,这节将告诉你使用Jetty你需要配置些什么. 配置Server Server实例是Jetty服务端的中心协调对象,它为所有其他Jetty服务端组件提供服务和生命周期管理.在标准Jetty发布中,核心的服务端配置是在etc/jetty.xml文件中,你也能在其中包含其他服务端配置,可以包括: 1)ThreadPool Server实例提供了一个线程池,你可以在etc/jetty.xml中配置最大线程数和最小线程数. 2)Handlers Jetty服务端只能有一个H

Jetty学习二:配置概览-怎么配置Jetty

Jetty POJO配置 Jetty的核心组件是Plain Old Java Objects(POJOs):配置Jetty的大部分工作就是在Jetty POJOs上的初始化.装配和设置域的处理,你能通过以下的方式来实现:  1)直接通过Java代码初始化和装配Jetty对象.这个在后面Embedding Jetty讲. 2)用Jetty XML配置(一个控制反转(IoC)框架)初始化和装配Jetty对象.etc/jetty.xml文件是基本的Jetty XML配置文件,但有一些其它的etc/je

Selenium Webdriver 学习总结-Jenkins配置(八)

这周单位要做一个人脸美化的项目,查资料遇到这位大牛的博客,地址如下:点击打开链接 我的代码也是在他的基础上进行修改的,但是他对图像的RGB三个通道平等调节,为了适应我的需求,我改成了针对三个通道分别调节.废话不多说,开始上源码 void ImageAdjust(Mat& src, Mat& dst, vector<double> low_in, vector<double> high_in, vector<double> low_out, vector&