2023年3月11日土曜日

私のtmux (2023年バージョン)

 

私の環境

- SparkyLinux6.6

- bash5.1.4

- tmux3.3a

- Terminal: xfce terminal

- Terminal font: DroidSansMono Nerd Font 10


私のtmuxの見た目です。

左右に画面を分割し、右側を上下に分割しています。


ターミナルは、xfce terminal を使用しています。

私が試した他のターミナルは、画面分割したときに罫線が崩れてしまったのですが、xfce terminal は問題ありませんでした。

ターミナルフォントは、DroidSansMono Nerd Font 10を使用しています。

下記から入手しました。

xfce terminal のフォント設定以下のとおり。

ターミナル右クリックでメニューを表示し、「設定」を選択すると設定画面が開きます。


tmuxの設定(tmux.conf)は以下のとおり。

###############################################################
# シェルの設定
###############################################################

# tmux 起動時のシェルを /bin/zsh にする
#set -g default-shell /bin/zsh

# /usr/local/bin/zsh を使っている場合
# set -g default-shell /usr/local/bin/zsh

###############################################################
# prefix キーバインド変更 ※デフォルトは C-b
###############################################################

# prefix を C-z に変更する
#set -g prefix C-z
#bind-key C-z send-prefix
#unbind-key C-b

# prefix C-b を解除
#unbind C-b

###############################################################
# Emacs 風キーバインド
###############################################################

# setw -g mode-keys vi
setw -g mode-keys emacs

# prefix C-z でコピーモードに入る
bind-key C-z copy-mode
# prefix C-y でペーストする
bind-key C-y paste-buffer
# PageUp => 1ページ遡ってコピーモードに入る: ログを見る時など便利
bind -n Pageup copy-mode -u

unbind 1
unbind ^C
unbind &

# prefix 0 現在のペインを削除
bind 0 kill-pane
# prefix 1 ウインドウ内の現在のペインを残し、他のペインをウインドウにする
bind 1 break-pane
# prefix 2 ウインドウを横に分割
bind 2 split-window -v
# prefix 3 ウインドウを縦に分割
bind 3 split-window -h
# prefix o ペインをローテート
bind o select-pane -t :.+
# prefix k ウインドウを削除
bind k kill-window
# prefix C-k ペインを削除
bind C-k kill-pane
# prefix i
bind i display-panes
# prefix C-t
bind C-t next-window
# prefix c
bind c  new-window

###############################################################
# vim 風キーバインド
###############################################################

# vim のキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# 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 コピーモード ######

# 'v' で選択を始める
# bind -T copy-mode-vi v send -X begin-selection

# 'V' で行選択
# bind -T copy-mode-vi V send -X select-line

# 'C-v' で矩形選択
# bind -T copy-mode-vi C-v send -X rectangle-toggle

# 'y' でヤンク
# bind -T copy-mode-vi y send -X copy-selection

# 'Y' で行ヤンク
# bind -T copy-mode-vi Y send -X copy-line

###############################################################
# キーバインド
###############################################################

# 番号基準値を変更
set -g base-index 1

# マウス操作を有効にする
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

# マウスアップ時に選択完了せず、選択状態を維持し、Ctrl-cでクリップボードにコピーする
unbind -T copy-mode MouseDragEnd1Pane
unbind -T copy-mode-vi MouseDragEnd1Pane
bind-key -T copy-mode C-c send-keys -X copy-pipe-and-cancel "xsel -bi"
bind-key -T copy-mode-vi C-c send-keys -X copy-pipe-and-cancel "xsel -bi"

###############################################################
# 色・見た目
###############################################################

# ステータスバーを 1 秒毎に描画し直す
set -g status-interval 1

# センタライズ (主にウインドウ番号など)
set -g status-justify centre

# ステータスバーをトップに配置する
set -g status-position top

# 左右のステータスバーの長さを決定する
set -g status-left-length 90
set -g status-right-length 90

# ステータスバー(左側)
#set -g status-left '#H:[#P]'
#set -g status-left 'Session:#S W:#I P:#P'
set-option -g status-left  "\
#[bg=colour148]#[fg=colour234] Session:#S W:#I P:#P \
#[bg=colour054]#[fg=colour255] #h \
#[bg=colour024] #(~/workspace/toolbin/ip.sh)\
#[fg=colour024]#[bg=colour234]"

# ステータスバー(中央)
setw -g window-status-current-format '\
#[fg=colour239]#[bg=colour234]#[bg=colour239]#[fg=colour119]\
#I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]\
#F#[fg=colour239]#[bg=colour234]'

# ステータスバー(右側)
#set -g status-right '[%y-%m-%d(%a) %H:%M]'
set-option -g status-right "\
#[fg=colour237]#[fg=colour254]#[bg=colour237]\
#[bg=colour237] #(~/workspace/toolbin/uname.sh)\
#[fg=colour240]#[fg=colour255]#[bg=colour240]\
%Y-%m-%d(%a) %H:%M "

# ステータスバーの色を設定する
set -g status-bg "colour234"
set -g status-fg "colour255"

# pane border
set -g pane-border-style fg="colour236"
set -g pane-active-border-style fg="colour106"
#setw -g window-status-activity-style bg="colour16","underscore",fg="colour45"

# pane status bottom
set-option -g pane-border-status bottom

# tmuxを 24bit color 表示できるようにする
set -g default-terminal xterm-256color
set -ga terminal-overrides ',xterm-256color:Tc'

###############################################################
# iTerm2 設定
###############################################################

# tmux ウインドウタイトルを iTerm2 タブ/ウインドウのタイトルに表示する
#set-option -g set-titles on
#set-option -g set-titles-string '#T'

###############################################################
# Plugin for windows
###############################################################

# https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x86.zip
#bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "win32yank.exe -i"
#bind p run-shell 'win32yank.exe -o | xargs -0 -I{} tmux set-buffer -- {} && tmux paste-buffer'

emacsライクなキーバインドにしています。

- CTL-b,2 で上下2列に分割

- CTL-b,3 で左右2列に分割


コピー&ペーストは、デフォルト設定だとブラウザにペーストできなかったので変更しています。

- マウスで選択後、CTL-cでコピーします。

- CTL-SHIFT,vでペーストします。


~/workspace/toolbin/ip.sh で画面左上に自分のIPアドレスを表示します。

#!/bin/bash 
ip=$(ip a | grep inet | grep wlan0 | awk '{print $2}')
echo "$(echo -e '\uf817') ${ip}"

~/workspace/toolbin/uname.sh で画面右上に自分のOSを表示します。

#!/bin/bash
os=$(cat /etc/os-release | tr -d '"' | awk -F'=' '($0~/^NAME/){printf("%s ",$2)}')
echo "$(echo -e '\uf83c') ${os}"