一个简单但是好用的 tmux 配置

发布时间 2023-11-25 23:09:45作者: ストッキング

直接上配置

set -g mouse on

set -g history-limit 323

set -g status-bg blue
set -g status-fg black
set -g status-position top
set -g window-status-format "?"
# set -g window-status-format "#I#W"
set -g window-status-current-format "?"
# set -g status-right "%m-%d-%Y %H:%M  "
set -g status-right ""

bind-key -T prefix v run-shell "tmux split-window 'cd \"$(tmux display-message -p \"#{pane_current_path}\")\"; exec bash'"
bind-key -T prefix h run-shell "tmux split-window -h 'cd \"$(tmux display-message -p \"#{pane_current_path}\")\"; exec bash'"
bind-key -T prefix x kill-pane
bind-key -T prefix l choose-tree -Zs
bind-key -T prefix t new-session

bind-key -n C-k clear-history
bind-key -n C-q kill-pane
bind-key -n F2 command-prompt -I "#W" { rename-window "%%" }

这是一个 tmux 的配置,很短,但是实用性很高,下面简单的解释一下这个配置的作用和一些配置的目的。


两个最基础的配置

这个配置一共分为 5 段。 set -g mouse on 是启用鼠标操作,允许通过滚轮滚动查看历史输出。更重要的是可以通过鼠标来改变面板的大小以及一些其他的鼠标操作。

set -g history-limit 323 则是设置保存历史信息长度(单位是行),这个按照自己的使用习惯即可。

一个更简洁的状态栏

第三段是配置 tmux 状态栏的样式和显示内容。通过 status-fgstatus-bg 设置状态栏的前景色和背景色。window-status-format 则是设置窗口信息格式化显示的内容,#I 是当前窗口的序号,#W 则是当前窗口的标题。针对个人使用习惯,并不会太关注他们的名字,所以直接使用水滴符号进行表示。 而 window-status-current-format 可以设置当前正在使用的窗口的格式化内容,我是直接使用火焰符号进行表示(这个两个符号都需要依赖 NerdFont 字体的支持,如果你想要让自己的配置更具备可移植性可以使用 #W 或者 Emoji 表示)。status-right 则是修改状态栏右侧显示内容(之所以没有去修改 status-left 是因为左侧本来就是用来显示窗口列表,所以不需要特别的配置)。而 status-position top 则是将状态栏放到窗口顶部,更便于查看。设置完成之后的状态栏看起来就是这样的。

image

状态栏右侧原本有时间和日期显示,我个人并不会在终端里面看时间,看也是通过系统的状态栏查看,所以也就关闭了,如果你想要保留的话可以通过注释部分的样例进行自定义。

快捷键的配置

对于快捷键的配置分成了两部分,一部分是有前置触发键位的,一部分是没有前置触发键位的。如果你认为默认的 C-b 很不顺手或想要修改只需要对 prefix 自行自定义即可。通过 prefix + v/h 进行分屏,除了相比原本的键位更容易按之外,也更容易记忆,更重要的是,在后面的配置可以让新建的面板和当前面板处于同一个目录——但是我的默认 shell 是 bash,如果你的默认 shell 是 zsh 或 fish 的话需要将 exec 后的 bash 修改为自己的 shell 解释器。

prefix + x 用于关闭当前面板,并且不需要确认(默认配置需要确认)。prefix + l 查看所有 session。prefix + t 新建一个 session。新建 session 使用的是浏览器的键位,刚好额对应把状态栏放在顶部的布局。这里之所以没有使用 C-w 来关闭当前面板/窗口是因为 C-w 在终端中是删除前一段文字的快捷键,所以使用了 tmux 原生的键位。

后面的 C-k 清除的历史是 tmux 的缓冲区的历史,不会影响到当前已经输出的内容(清除之后无法通过滚轮上下滚动查看历史记录),与 C-l 配置实现快速的清屏和缓冲区。C-q 则是与 prefix-x 相同,你可以选择一个保留或修改为自己想要的键位。F2 则是快速修改当前窗口名称(推荐给上面将 windows-status-format 配置为 #W 的同学)。