Проблема в tmux.conf с вложенными кавычками if или вложенными кавычками - PullRequest
0 голосов
/ 05 мая 2020

I s sh в машины с общими файлами конфигурации, но с разными версиями tmux, поэтому я стараюсь иметь единую версию, поддерживающую .tmux.conf. Следующее относится к моей машине tmux 2.6.

Моя проблема связана с вложенными ifs или, возможно, вложенными кавычками.

следующий код скрывает строку состояния, когда присутствует только одно окно:

if -F '#{==:#{session_windows},1}' 'set -g status off' 'set -g status on'; \
set-hook -g window-linked 'if -F "#{==:#{session_windows},1}" "set -g status off" "set -g status on"'; \
set-hook -g window-unlinked 'if -F "#{==:#{session_windows},1}" "set -g status off" "set -g status on"'; 

однако мой контроль версий, который добавляет двойные кавычки вокруг строк с одинарными кавычками, прерывает это

if-shell -b '[ "$(echo "$TMUX_VERSION >= 2.1" | bc)" = 1 ]' " \
if -F '#{==:#{session_windows},1}' 'set -g status off' 'set -g status on'; \
set-hook -g window-linked 'if -F "#{==:#{session_windows},1}" "set -g status off" "set -g status on"'; \
set-hook -g window-unlinked 'if -F "#{==:#{session_windows},1}" "set -g status off" "set -g status on"'; \
"

tmux запускается без ошибок, но строка состояния не скрывается.

1 Ответ

0 голосов
/ 05 мая 2020

Вам нужно экранировать " внутри другого " как \".

Или поместить свои внутренние команды в отдельный файл конфигурации и загрузить его с помощью source-file.

Если вы использовали более позднюю версию tmux, вы могли бы использовать {}, чтобы избежать этой проблемы, но в более старых версиях tmux вам нужно будет избегать кавычек.

...