gpt4 book ai didi

Vim:t_Co=256 和 term=xterm-256color 与 TMUX 的区别

转载 作者:行者123 更新时间:2023-12-02 10:32:27 26 4
gpt4 key购买 nike

我正在测试各种不同的终端,我倾向于使用它们将 SSH 连接到我设置了 Tmux 的 Linux 机器中。

基本上我注意到了这种行为,我希望有人可以解释正在发生的事情。现在可能是这种情况是影响提示应用程序的特定行为。

我在 Tmux 中使用 Vim,并且在我的 iPhone5 上的 Panic 提示应用程序中,当 .vimrc 出现时,我的行为无法启用 256 种颜色。使用 set t_Co=256 设置颜色指示。在这里,当 Vim 没有通过 Tmux 运行时,它正确地显示了颜色。此外,OS X 的 Terminal.app 使用 Tmux 中的 Vim 正确呈现了颜色(不幸的是,我没有在 Windows 上用这个测试 PuTTY)。

然后我换掉了set t_Co=256set term=xterm-256color现在颜色在通过 Tmux 使用 Vim 时起作用。

另请注意,我同时测试了 set -g default-terminal "xterm-256color"set -g default-terminal "screen-256color" Tmux 的设置,此更改对行为没有影响。

最佳答案

不使用时 tmuxscreen ,你只需要配置你的终端模拟器,通过设置他们的 TERM 来宣传自己“能够显示 256 种颜色”。至 xterm-256color或任何适用于您的终端和平台的可比值(value)。你怎么做将取决于终端模拟器,并且超出了你的问题和这个答案的范围。

你不需要在 Vim 中做任何事情,因为它完全有能力自己做正确的事情。

当您使用 tmuxscreen ,这些程序为 $TERM 设置了自己的默认值, 通常 screen , Vim 对它所提供的信息进行处理。

如果您想要更统一(和丰富多彩)的行为,您必须将它们配置为对 $TERM 使用“更好”的值。 :

  • tmux

    将此行添加到 ~/.tmux.conf :
    set -g default-terminal "screen-256color"
  • 屏幕

    将此行添加到 ~/.screenrc :
    term "screen-256color"

  • 现在,两个多路复用器都会告诉 Vim 它们支持 256 种颜色,而 Vim 会做你期望它做的事情。

    编辑

    我的回答假设您可以编辑这些配置文件,但是,因为您可以编辑您的 ~/.vimrc ,我不认为我离题太远了。

    编辑 2
    term的值option(用 &term 检索)是 Vim 在启动时选取的终端名称。该名称是您应该在终端仿真器本身中设置的名称。
    t_Co的值option ( &t_Co ) 是 Vim 认为主机终端可以显示的最大颜色数。根据 $TERM对应的条目定义在 terminfo :
     term            | t_Co
    -----------------+------
    xterm | 8
    xterm-256color | 256
    screen | 8
    screen-256color | 256

    当 Vim 启动时,它获取 TERM 的值环境变量,查询 terminfo具有该值的数据库,并在多个 t_… 中存储了许多有关其环境的信息。其中的变量... t_Co 中可用的颜色数量.给定一个“合法的”终端类型(Vim 可以查找的类型),Vim 总是假定正确的颜色数量。

    设置 t_Co256离开时 term到它的 Vim 定义的值——或者,更一般地说,设置 t_Co和/或 term到与主机终端不匹配的值 - 没有意义,并且当 Vim 发送终端不理解的信号时可能会造成麻烦,反之亦然。

    虽然完全有可能这样做,但要搞乱 t_Coterm在 Vim 中既完全无用又可能有害。

    同样,只需正确设置您的终端仿真器和终端多路复用器。这就是你所需要的。

    如果您最终在无法定义正确的终端多路复用器或终端仿真器中 TERM ,然后并且只有这样您才能强制 Vim 呈现 256 种颜色。为此,更改 t_Co 的值是唯一有意义的事情:
    if &term == "screen"
    set t_Co=256
    endif

    所以......如果你可以配置每个单独的部分:
  • 终端模拟器:xterm-256color
  • tmux/屏幕:screen-256color
  • vim:没什么

  • 你就完成了。

    如果你不能控制每一个部分,在你的 ~/.vimrc 中使用一个简单的条件。设置 t_Co根据 &term但不要更改 term 的值.

    但是如果你可以编辑一个 ~/.vimrc您没有理由不能编辑 ~/.screenrc~/.tmux.conf~/.bashrc管他呢。

    关于Vim:t_Co=256 和 term=xterm-256color 与 TMUX 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375992/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com