背景:我正在设置 Arcolinux 的安装。我有一个键盘快捷键 SUPER+Enter 来启动 alacritty。
我想要的是让 alacritty 自动创建并在新的 tmux 会话中启动(如果没有尚未附加的会话)。或者,如果没有附加任何内容,则附加到现有的 tmux 会话。
我通过将以下内容添加到 alacritty.yml 中来实现此功能:
shell:
program: /usr/bin/bash
args:
- -l
- -c
- "tmux ls | grep -v attached && tmux attach || tmux"
这一切都完全按照我想要的方式工作,除了一件事之外,使用这种方法时 nvim 中的颜色会变得混乱(较暗,因此视觉模式具有与背景相同的突出显示颜色 - 烦人)。
我发现了几个相关问题并尝试了解决方案:例如,我的 tmux 配置中有以下内容(以及一些其他变体,包括 2 衬垫):
set -ag terminal-overrides ",xterm-256color:RGB"
我已确保 TERM 变量设置为,xterm-256color
并且我还尝试在 nvim 中将背景设置为“暗”。
当我从连接到在 alacritty 中使用上述配置的 tmux 会话启动 nvim 时,这些似乎都没有帮助。
但是,如果我删除 alactritty 配置并运行命令来手动连接到 tmux,一切都会正常工作,并且 nvim 看起来符合预期:
/usr/bin/bash -l -c "tmux ls | grep -v attached && tmux attach || tmux"
任何想法为什么我从 alacritty 配置启动时得到不同的结果。
仅供参考,我这样做的部分原因是因为我不知道 SUPER+Enter 的绑定设置在哪里,无法在任何配置文件或设置中找到它(是否有更好的方法来追踪它)所以想法这可能也有用。
答案1
我希望这可以帮助别人:
我解决了这个问题,但我仍然有点困惑。当我从 nvim 运行时,:checkhealth
确认 TERM 变量存在问题。据报告 TERM 设置为tmux-256color
并给出了以下警告:
警告 Tc 和 RGB 功能均未设置。真彩色被禁用。 |'termguicolors'|将无法正常工作。
令人困惑的部分是你可以在 alacritty 中设置一个术语,但文档说:
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use `alacritty` if it is
# available, otherwise `xterm-256color` is used.
当我运行echo $TERM
它时,它返回了xterm-256color
,所以我留下了它,但事实证明,解决方案是在 alacritty 配置中显式将 TERM 设置为xterm-256color
:
env:
TERM: "xterm-256color"
这也需要在你的 tmux 配置中设置(但我已经有了):
set -ag terminal-overrides ",xterm-256color:RGB"