用tmux提高工作效率 配置篇

本文中很多内容都是摘自《tmux Productive Mouse-Free Development》一书。书的篇幅也不长,只有80多页,感兴趣的话,推荐一读。 豆瓣

images/tmux_panels.png

tmux配置文件的地址

分两种:

  • /etc/tmux.conf 存储的是系统中所有用户的全局配置
  • ~/.tmux.conf 存储的时用户个人的配置

自定义快捷键

tmux 一些默认的快捷键并不是很好用,下面罗列一些笔者觉得更人性化的自定义快捷键

  • set -g prefix C-a 将prefix键设为Ctrl+a
    prefix键在tmux中使用十分频繁,几乎所有的都需要先按prefix键,而tmux默认的prefix键是C-b(Ctrl+b), Ctrl键和 b相隔甚远, 十分难按,非常坑爹。

    很多tmux用户曾使用过GNU screen, screen的prefix键 C-a显然比C-b更加便捷,也减少了screen用户的学习成本

    对于prefix键重度使用者,可以用键位映射工具,将CapsLock大小写锁定键映射成Ctrl键,C-a就更加容易按了。

    添加了新的的prefix键位后,将C-b与prefix键解绑,留作他用。 unbind C-b

    source-file ~/.tmux.conf 之后,更改的配置才会生效

    bind C-a send-prefix 由于prefix按键被tmux拦截,Emacs,VIm等软件可能会不能正常工作,这个设置可以让用户连按两次C-a,来向第三方软件发送prefix按键

  • bind r source-file ~/.tmux.conf 按r可以让更改后的tmux设置生效

  • bind | split-window -h

    bind - split-window -v

    纵向和横向切分面板。切分面板本来是tmux的一大杀器,但默认的命令太过繁琐,而且|和-更直观得表明了切割方向

  • bind h select-pane -L

    bind j select-pane -D

    bind k select-pane -U

    bind l select-pane -R

    在不同面板间切换。也是比较常用的,用LDUR表示方向在按键时很不方便,改为vim风格的。

  • 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

    改变面板的大小。四个方向还是使用vim风格的方向键,不过这里用的是大写。

    这里-r的作用是,如果要窗口向上扩展一大段空间,按了prefix键后,连着按H就行了。

  • bind -r C-h select-window -t :- bind -r C-l select-window -t :+ 切换窗口。这里的按键和切换面板的对应。

基本的界面设置

  • set -sg escape-time 1 tmux,会有一个延时,以方便用户输入按键组合,但默认的有点长,1秒钟足矣

  • set -g base-index 1 有些用户习惯让窗口的编号从1开始(默认是0)

  • setw -g pane-base-index 1 类似的可以设置面板的开始编号

鼠标相关的设置

  • setw -g mode-mouse on

  • set -g mouse-select-pane on

  • set -g mouse-resize-pane on

  • set -g mouse-select-window on

    即使在命令行下,鼠标有时也是能提高工作效率的

色彩设置

  • set -g default-terminal "screen-256color" 让tmux支持256色
  • 设置底部状态条的颜色

    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 red

    set -g pane-active-border-bg black

  • 设置命令出错后提醒的颜色

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

状态条设置

  • set -g status-left-length 40

    set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P" 状态栏左侧的长度和文字颜色

  • set -g status-right "#[fg=cyan]%d %b %R" 右侧

  • set -g status-utf8 on

  • set -g status-interval 60 每60秒更新一次显示的时间。默认是15秒

  • setw -g monitor-activity on

    set -g visual-activity on

    非当前窗口中有事件发生时(比如一个耗时的命令跑完了),状态栏上会有高亮提醒