Jef*_*eff 4 colors tmux solarized
我试图找到一种方法来轻松地在浅色/深色日光化主题之间切换,而无需创建新的终端/tmux 会话。我在 Windows 机器上运行 mintty,通常登录到 Linux 机器并连接到 tmux 会话。
使用mavnn 的日光化薄荷色和seebi 日光化的 tmux颜色,我编写了一些可以即时更改终端颜色的 bash 函数。这是在我的 .bashrc 中:
函数godark()
{
~/solarized/sol.dark
tmux 源文件 ~/tmux/tmuxcolors-dark.conf
}
函数 golight()
{
~/solarized/sol.light
tmux 源文件 ~/tmux/tmuxcolors-light.conf
}
所以在 sol.dark 里面有如下指令:
echo -ne '\eP\e]10;#839496\a' # 前景 -> base0 echo -ne '\eP\e]11;#002B36\a' # 背景 -> base03
在我的 tmuxcolors-dark.conf 里面,我会有这样的东西:
set-option -g status-bg colour235 #base02 set-option -g status-fg colour130 #yellow
这几乎是有效的。如果我没有打开 tmux,我可以输入“godark”,mintty 会变成深色主题,但是如果我在 tmux 中输入它,它会将我的 tmux 状态栏更改为正确的主题,但我的终端背景不会改变颜色. 我不太了解 ANSI 转义序列,所以也许我在这里做了一些愚蠢的事情。我将不胜感激!
您可以通过像这样转换转义序列,将转义序列从 tmux 内部发送到包含终端:
\e\ePtmux;\e\\例如,使用st作为我的终端模拟器,我可以通过执行重新定义其调色板的颜色 #1(红色)
printf '\e]4;1;#aa0000\a'
Run Code Online (Sandbox Code Playgroud)
要在 tmux 中执行相同操作,我必须使用
printf '\ePtmux;\e\e]4;1;#aa0000\a\e\\'
Run Code Online (Sandbox Code Playgroud)
使用 shell 脚本/函数切换颜色时,请检查$TMUX环境变量。如果它不为空,那么您就在 tmux 中。