Environment-Variables
為什麼 tmux 不提取我的 tmux.conf 中的變數?
我試圖通過將顏色抽像到一個單獨的文件來使我的 tmux 配置更加模組化。我正在獲取該文件,然後將其中定義的變數用作我的 tmux 主題:
# part of my tmux.conf: source '~/.tmux/themes/gruvbox' # status bar set -g status "on" set -g status-attr "none" set -g status-justify "left" set -g status-bg $TMUX_STATUS_BG # status left set -g status-left-attr "none" set -g status-left-length "100" # status right set -g status-right-attr "none" set -g status-right-length "100" # window setw -g window-status-attr "none" setw -g window-status-separator "" # this isn't picked up setw -g window-status-format "#[fg=$TMUX_WINDOW_STATUS_FG,bg=$TMUX_WINDOW_STATUS_BG] #I | #W " # active window setw -g window-status-activity-attr "none" # this isn't picked up either setw -g window-status-current-format "#[fg=$TMUX_ACTIVE_WINDOW_STATUS_FG,bg=$TMUX_ACTIVE_WINDOW_STATUS_BG] #I | #W " # panes set -g pane-active-border-fg $TMUX_ACTIVE_BORDER_FG set -g pane-border-fg $TMUX_BORDER_FG # command bar set -g message-command-fg $TMUX_MESSAGE_COMMAND_FG set -g message-command-bg $TMUX_MESSAGE_COMMAND_BG set -g message-fg $TMUX_MESSAGE_FG set -g message-bg $TMUX_MESSAGE_BG
這就是我設置顏色的地方
# ~/.tmux/themes/gruvbox TMUX_STATUS_BG="#3c3836" TMUX_ACTIVE_BORDER_FG="#fabd2f" TMUX_BORDER_FG="#3c3836" TMUX_MESSAGE_COMMAND_FG="#a89984" TMUX_MESSAGE_COMMAND_BG="#3c3836" TMUX_MESSAGE_FG="#a89984" TMUX_MESSAGE_BG="#3c3836" # these aren't picked up, the above vars are TMUX_WINDOW_STATUS_FG="#a89984" TMUX_WINDOW_STATUS_BG="#3c3836" TMUX_ACTIVE_WINDOW_STATUS_FG="#282828" TMUX_ACTIVE_WINDOW_STATUS_BG="#fabd2f"
它主要工作,除了視窗狀態變數,tmux 不適用。他們需要不同的語法嗎?如果是這樣,是哪個?
所以視窗狀態設置不允許變數的插值。但是,您可以使用腳本來回顯視窗配置。在那個腳本變數中可以使用。所以在你的
.tmux.conf
你可以做這樣的事情:setw -g window-status-current-format "#(~/.tmux/window.sh current)" setw -g window-status-format "#(~/.tmux/window.sh)"
在
window.sh
(或任何其他腳本)中:#!/bin/bash if [[ $1 == "current" ]]; then echo "#[fg=${TMUX_CURRENT_WINDOW_FG},bg=${TMUX_CURRENT_WINDOW_BG}] #I | #W " else echo "#[fg=${TMUX_WINDOW_FG},bg=${TMUX_WINDOW_BG}] #I | #W " fi
這確實有效。