当 SHELL 设置为 xonsh 时如何修复 vim 抛出错误?

How to fix vim throwing error when SHELL is set to xonsh?

当我开始 vim 我得到:

Error detected while processing /home/kossak/.vimrc:
line    1: E484: Can't open file /tmp/vdf7WFR/0
Press ENTER or type command to continue

我在 ~/.vimrc 中的第一行是 let s:uname = system("uname -s").

错误发生是因为 SHELL env var 设置为 /home/kossak/.local/bin/xonsh。它是由 tmux 自动设置的,因为我的 .tmux.conf 中有 set -g default-shell /home/kossak/.local/bin/xonsh。我想手动将 $SHELL 设置为 /bin/bash,而不更改 tmux 的 default-shell。可能吗?

我知道我可以在 CLI 中 运行 tmux setenv -g SHELL '/bin/bash' 然后新的窗格会有新的值,但是如何在 .tmux.conf 中做到这一点,所以 tmux 会自动为我做?

我尝试将 setenv -g SHELL '/bin/bash' 添加到 .tmux.conf 但它不起作用($SHELL 的值未更改)。

只需告诉 vim 更喜欢 bash,以使您的 vim 保持一致。

if executable('bash')
   set shell=bash
endif

你不能让 tmux 交换 env-vars,但你可以让 xonsh 很容易做到,例如

with ${...}.swap({"SHELL": "/bin/bash"}):
    vim

将打开 vim 并且您的环境突变为设置 $SHELL=/bin/bash 但仅适用于上下文管理器的主体。

您可以在 xonshrc

中将其设置为 vim 的别名
def _vim():
    with ${...}.swap({"SHELL": "/bin/bash"}):
        vim

aliases["vim"] = _vim