在 tmux 中使用 256 种颜色

xen*_*ide 221 colors settings tmux konsole

我有 256 种颜色在konsole,. 我想我会tmux尝试一下,因为与屏幕不同,它似乎支持vi模式。但是我发现我的提示的颜色显示出来了,这很可能是因为我有一个 256 色模式的提示。我需要做什么tmux才能识别所有 256 种颜色?

0xY*_*NTI 324

TMUX FAQ明确建议不要设置TERM比其他任何东西screenscreen-256colortmuxtmux-256color在你的shell init文件,所以不要做吧!

这是我使用的:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux
Run Code Online (Sandbox Code Playgroud)

在我的 .tmux.conf 中:

set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)

别名tmux为“ tmux -2”也应该可以解决问题。

并且不要忘记重新启动您的 tmux 服务器:(请参阅@mast3r 答案

tmux kill-server && tmux
Run Code Online (Sandbox Code Playgroud)

  • 我最喜欢在 .tmux.conf 中设置它的方式......使用shell来设置它似乎不正确 (8认同)
  • 奇怪的。你在 OSX 上不需要 `tmux -2`,但你需要在 Gnome 终端上使用它。感谢您提供的信息,已添加到我的别名中! (6认同)
  • 对我来说,似乎我需要做的就是“TERM=screen-256color tmux”,而无需创建“.tmux.conf”文件。我错过了什么吗? (2认同)

小智 51

尝试在 bashrc 或 zshrc 中明确设置 256 种颜色:

export TERM=xterm-256color
Run Code Online (Sandbox Code Playgroud)

或者

export TERM=screen-256color
Run Code Online (Sandbox Code Playgroud)

如果您在使用屏幕术语设置时 tmux 无法正确清除背景颜色的问题,您可以尝试:

export TERM=screen-256color-bce
Run Code Online (Sandbox Code Playgroud)

  • -1,你不应该在你的 shell 初始化文件中无条件地设置。将其设置为 `xterm-256color` 也会在 tmux 内部覆盖它,而在 tmux 外部将其设置为 `screen-256color` 可能会导致显示错误。 (9认同)
  • 第一个是我的默认 TERM 设置......我刚刚尝试了其他 2 个,一旦我输入 tmux,我的提示仍然没有显示颜色。(我想注意 tmux 确实在底部显示颜色)......似乎当我输入 tmux 时,它会将 TERM 重置为 TERM=screen ......也许有一种方法可以在配置中覆盖它? (2认同)

use*_*062 32

根据tmux 常见问题解答,将其添加到您的~/.tmux.conf

set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)

然后为 tmux 添加这个别名:

alias tmux='tmux -2'
Run Code Online (Sandbox Code Playgroud)

无需覆盖TERM配置文件中或启动时的变量tmux

更多信息:http : //vim.wikia.com/wiki/256_colors_setup_for_console_Vim

  • 配置 tmux 对我来说就足够了;我不需要设置别名(尽管它可能不会受到伤害)。 (4认同)

Gab*_*ent 19

最新版本的 ncurses 附带了tmux-256color terminfo 条目(常见问题解答确实提到了这一点)。例如,使用tmux-256color优于screen-256color的好处是斜体可以正确呈现(屏幕不支持斜体)。

因此,如果您正在使用tmux 2.6或更高版本,并且拥有最新的 ncurses 包,以下内容也将起作用:

set -g default-terminal "tmux-256color"
Run Code Online (Sandbox Code Playgroud)


小智 13

对于拥有最新 tmux 的人,已.tmux.conf接受答案中的选项应该有效。

我只想补充一点,您可能需要重新启动 tmux 才能使新配置生效:

tmux kill-server && tmux

有趣的是,这在答案中的任何地方都没有提到,我花了一段时间才弄清楚。

  • 不知道服务器重启吞噬了我生命中的几个小时。 (8认同)
  • 我刚刚在这里创建帐户是为了告诉你,它救了我的命。我正准备放弃 tmux。但是这在我的生活中拯救了 tmux ;) 我不能投票 :(。 (2认同)

小智 11

以下几行~/.tmux.conf对我有用——

set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"
Run Code Online (Sandbox Code Playgroud)

测试于

  • Tmux 2.7、Ubuntu 16.04、18.04
  • Tmux 2.9,CentOS
  • Tmux 3.0a,CentOS7

  • 我已经搜索了一个小时,这是唯一对我有用的东西。我正在使用 tmux v3.2a 运行 Arch。 (3认同)
  • 也为我工作过。谢谢!(Tmux 3.0a、Ubuntu 20.04、终端模拟器:`Konsole`) (2认同)

小智 9

我无法解释为什么这有效,但它为我解决了问题。

~/.tmux.conf

set-option -g default-command bash
Run Code Online (Sandbox Code Playgroud)

  • 我尝试将此作为最后的手段,令人惊讶的是它有效! (2认同)