terminal - tmux 不使用 screen-256color,即使它是在配置文件中设置的

标签 terminal zsh tmux

我正在尝试让 tmux 使用 screen-256color 而不是 xterm-256color,因为不建议这样做。但是当我不使用 tmux 时,我想将其保留为 xterm-256color

我的一些设置,我目前正在使用 iTerm2 和 ssh 到我的开发 Linux 盒子,该盒子使用 zsh。

在我的 ~/.zshrc 中,我有:

export TERM="xterm-256color"

在我的 ~/.tmux.conf 中,我有:

set -g default-terminal "screen-256color"

使用此配置,没有 tmux,echo $TERM 返回 xterm-256color(这是正确的),而使用 tmux,echo $TERM 仍然返回 xterm-256color 而不是 screen-256color。

我还需要设置什么才能使其正常工作吗?

谢谢!

最佳答案

这不能按预期工作的原因是,在 tmux 内启动的 zsh session 会覆盖 TERM

您不应在 shell 中设置TERMTERM 是终端向 shell 和其他应用程序通知其功能(颜色数量、特殊键的键序列等)的方式。如果您更改 shell 内的TERM,您就更改了 shell 和应用程序期望从终端获得的功能,而终端本身并不知道。通常这可能不是一个实际问题,但最好更改终端配置并在那里设置所需的值。

您在 tmux 的配置中设置 screen-256color 时已经这样做了,它本质上也是一个终端模拟器。要为 iTerm2 执行此操作(使用版本 3.0.10 进行测试):

  1. 打开首选项对话框(在菜单中:iTerm2首选项,或按+)。
  2. 在对话框中转到配置文件终端
  3. 您可以在报告终端类型下为TERM选择所需的值。

关于terminal - tmux 不使用 screen-256color,即使它是在配置文件中设置的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472995/

相关文章:

linux - 我可以找出谁调用了 zsh 脚本吗?

macos - 尝试从 Go 应用启动终端时出现 "exit status 1"

visual-studio-code - 在 VS Code Ubuntu 中更改终端的复制和粘贴快捷方式

security - 如何修复 macOS Catalina 错误 "not authorized to send apple events to terminal"?

kubernetes - 如何在 zsh 上禁用 kubectl 自动补全

zsh 类似 iPython 的补全?

configuration - tmux:为什么这两行会在启动时导致 ".tmux.conf:2: can' t 建立当前 session ?

linux - 有没有更好的方法来显示 tmux 中的 cpu 使用情况?

terminal - 如何在 tmux Pane 中增加水平缓冲区

macos - 在 OSX 终端中从 Ping 命令创建日志