【vps工具使用】让你的tmux更加优美和实用——一个配置tmux.conf的指南

前言

一个配置tmux.conf的指南。

我之前的博客文章,我写了一份快速入门tmux的文章,同时解释了怎样在最原始的配置基础下使用tmux。

如果你按照那个指南来进行操作过了的话,你就会感受到大部分第一次使用tmux的人的感受:“这些键的组合是真的麻烦!”放心好了,你不是一个人。根据大部分的博客文章和Github的dotfiles的仓库来看,许多人也想要让他们tmux的行为变得与之前有点不一样,以此以更加优雅的方式使用tmux。

事实上,自定义tmux的外观和使用体验是很容易的。现在让我告诉你一些基本的自定义tmux的方法,同时也分享一些我发现最有用的配置。

自定义tmux

自定义tmux就像编辑一个文本文件一样容易。tmux使用一个叫做tmux.conf的文件来保存它的配置。如果你把那个文件存储在~/.tmux.conf这里(注意:这里有一个小圆点作为这个文件名称的第一个字母)tmux将要在你之后使用的过程中先加载这个文件。如果你想要为更多使用者分享一个配置文件的话(例如如果你想要以管理员权限使用tmux的话(请仔细思考这个!))你也可以把你的tmux.conf放在一个系统范围的目录里。这个目录的位置在不同的操作系统里是不一样的。你只需要使用-f参数查看man手册(man tmux),它就会告诉你准确的位置。

让前缀键变得更加简单

可能对于大部分tmux的使用者来说,最经常改变原先配置的地方就是将前缀从这个麻烦的C-b变成其他一些更容易接受的按键。个人来说,我会使用C-a来进行替换,但是要注意,这个可能与bash的到行的开头的命令相冲突1。除了以上的C-a组合键,我也将我的Caps Lock键绑定了Ctrl键,因为我反正也不用Caps Lock键。这将让我更好的使用我的前缀键组合。

只需要添加下列行到你的tmux.conf文件中,你的前缀就可以从C-b绑定到C-a

# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

理智的分割命令

另一个我发现很难记忆的是分割面板的命令。我的意思是,你是认真的吗?使用"来垂直分割,使用%进行水平分割?谁打算记忆这些呢?我发现用比较直观的字母来代表分割是比较有用的。所以我选择|-来分割面板:

# split panes using | and -
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %

更容易重新载入配置文件

因为我经常对我的tmux.conf进行各种尝试,所以我想要更容易地重新载入配置。这就是我为什么使用r命令来重新载入我的配置。

# reload config file (change file location to your the tmux.conf you want to use)
bind r source-file ~/.tmux.conf

更快的进行面板切换

在面板之间进行切换时最经常进行的任务之一。因此它也应该变得尽可能简单。我不是很喜欢一直触发前缀键。我想要通过M-<direction>就能去我想要去的任何面板(记住:MMeta,通常是你的Alt键)。在这个修改的基础上,我可以仅仅通过按住Alt-left就能去左边的面板(以及其他方向):

# switch panes using Alt-arrow without prefix
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

鼠标模式

尽管说tmux很明显地,想让使用者专注于只用键盘(同时这也肯定是与你的终端进行交互的最有效的方式),但是允许使用鼠标对tmux进行交互的过程也很有帮助,特别是当其他人不得不使用你的tmux配置与tmux进行交互,并且他们对你的绑定键没有一个大体了解时。

允许鼠标模式将让你可以通过鼠标的点击来选择窗口和不同的面板。我发现在终端中只通过鼠标选择文本可能会有一点混乱。所以你应该仔细考虑对于你的使用来说,这个配置是否是值得的:

# Enable mouse control (clickable windows, panes, resizable panes)
set -g mouse-select-window on
set -g mouse-select-pane on
set -g mouse-resize-pane on

tmux2.1的更新

正如Jon Lillie在评论里指出的一样,鼠标在tmux2.1(或者更新的)的用户,你可以通过一个简单的命令激活鼠标模式:

# Enable mouse mode (tmux 2.1 and above)
set -g mouse on

这个新的模式也是旧的鼠标选项和对文本选择问题修复的一个组合。

停止对窗口自动更新

我喜欢使用,键来给我的tmux窗口取一个自定义名称。这将让我可以通过不同窗口正在进行的工作来对这些窗口进行命名。默认情况下,tmux会根据该窗口内执行的最新的指令来对窗口的名字进行自动更新。为了避免tmux覆写我给我的窗口所取的明智的名字,我想要禁止这个行为:

# don't rename windows automatically
set-option -g allow-rename off

改变tmux的外观

改变tmux的颜色和设计比我目前所展示的比起来有一点复杂。你会希望tmux能够有一个一致的外观,因为你不得不改变许多tmux所展示的元素的长相。这就是为什么需要在你的配置中添加许多行代码来改变tmux的设计。我只建议将它放在你的tmuxconf文件中可识别的部分,这样不会意外地拆除你的宝贵的自定义按键。我会使用以#开头的注释来让改变设计的部分变得可视化。
值得表扬的是:我没有创造以下的这些设计。/u/dothebarbwa好心地将它公布/r/unixporn。所以这一切都是他的成果,我不得不向他表示感谢。谢谢你!

取决于你的颜色主题(我正在使用base16-ocean-dark)你最终的tmux应该看起来像这样:
tmux

######################
### DESIGN CHANGES ###
######################

# loud or quiet?
set -g visual-activity off
set -g visual-bell off
set -g visual-silence off
setw -g monitor-activity off
set -g bell-action none

#  modes
setw -g clock-mode-colour colour5
setw -g mode-style 'fg=colour1 bg=colour18 bold'

# panes
set -g pane-border-style 'fg=colour19 bg=colour0'
set -g pane-active-border-style 'bg=colour0 fg=colour9'

# statusbar
set -g status-position bottom
set -g status-justify left
set -g status-style 'bg=colour18 fg=colour137 dim'
set -g status-left ''
set -g status-right '#[fg=colour233,bg=colour19] %d/%m #[fg=colour233,bg=colour8] %H:%M:%S '
set -g status-right-length 50
set -g status-left-length 20

setw -g window-status-current-style 'fg=colour1 bg=colour19 bold'
setw -g window-status-current-format ' #I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]#F '

setw -g window-status-style 'fg=colour9 bg=colour18'
setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '

setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'

# messages
set -g message-style 'fg=colour232 bg=colour16 bold'

一句忠告

我在这篇文章里很认真地解释同时记录了我所建议的更改,以此来让你更好地理解他们的功能,同时决定这是否也是你想要在你的tmux.conf做出的改变。

如果你在互联网上做了大量调查的话,你会发现许多臃肿的tmux自定义配置文件。把它们复制下来然后度过一天真的很诱人。但是,为了你自己好,请不要那样做。相信我,我已经那么做过了。我只建议你从一个朴素的tmux配置文件开始,然后一个一个地往里面添加修改。这是唯一一个保证你能够完全理解你所做的所有改变的方式。同时,这也是你唯一在全程你能够真正学习tmux的方式。也就是说:继续前进,同时查找其他人已经发布地配置文件。把这些资源当作灵感的源泉,然后从中智慧地选择你真正想要添加到自己的配置文件中地东西。

除了我写的东西之外,也有许多有意思的东西。我看到过有人给他们的状态栏做了一些真的很奇妙的设置,比如把各种各样的系统信息都展示出来,这个可能真的很有意思。为了实现那些改变,你大概率是要写比我上面写的一行代码就能结束的东西要复杂的多的代码。这些通常涉及到很多需要加载的特别的脚本文件,通常也伴随着许多行的配置改变。我并不是打算让你不做那些事情。只是你需要注意,这是一个更加高级的主题,你肯定会搞砸一些东西。请相应的,确保备份好你的配置文件。

更多的资源

就像我已经和你们说过的,你们可以找到许多人用像我这样的方式来分享他们的tmux.conf文件。随意浏览然后去查找灵感。个人来说,我喜欢阅读其他人写的关于他们的tmux配置文件的博客文章。

GitHub也是一个很好的搜索资源的地方。只需要搜索"tmux.conf"或者叫做"dotfiles"的仓库,就可以寻找到那里的大量的配置文件。

如果你在特别寻找主题选项的话,我也建议你看看 /r/unixporn (SFW,不要管他的标题)。这是一个人们展示他们经过精调的同时主题繁杂的unix环境的地方。那里有一些真的很棒的东西,同时有一些东西华而不实。我也经常看到人们在那里分享他们的tmux.conf,你可以有目的性地搜索"tmux.conf"这个词来找找你正在寻找的东西。

你也可以在我的GitHub的dotfiles仓库找到我的完整的tmux.conf(和一些我正在我系统上使用的配置文件)。


脚注

  1. 然而你依旧可以通过按C-a C-a来实现"到行的开头"。
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容