终端中的物理缓冲区与 oh-my-zsh 配置中的显示不一致

终端中的物理缓冲区与 oh-my-zsh 配置中的显示不一致

我在 oh-my-zsh 配置中遇到了一个不寻常的问题,其中光标与文本不同步。 (我通常在工作screen中使用konsole.

例如,在新的终端行上,提示符上没有输入任何内容,光标在几秒钟后无缘无故地向前移动。就好像提示的起始位置向前移动,就像某个鬼魂所做的那样。

另一个特点是无法退格到第一个光标位置,并且无法退格到该位置的字符。

我看到的方式是,光标和显示的文本的视觉位置与正在编辑的文本的物理缓冲区内的实际位置不一致。

例如。假设我help在终端输入,然后使用向上箭头键获取上一个命令,该命令应该是help.似乎发生了一些事情,结果是当我退格时,help我只能退格到仍然显示的e位置h,但实际上物理缓冲区中的整个单词help都会被清除。因此,如果我想help再次输入,屏幕将显示hhelp,但按下回车键后,命令help将被执行。不会的hhelp

它只发生在根帐户上,尽管我确信我对根用户和最终用户使用相同的设置。

最终结果是,如果abcde在屏幕上显示 并退格,c我更有可能退格b,留下acde而不是abde

有任何想法吗?

更新:

这是与评论相关的附加信息。

我的提示是%{%f%b%k%}$(build_prompt).普通账户和root's 账户都是一样的。但问题仅出现在root帐户中。

答案1

我在 oh-my-zsh 中遇到了这个问题,docker并通过以下行解决了它Dockerfile

RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
    locale-gen
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8 

如果您直接在主机上运行,​​请尝试执行该步骤中的操作RUN并使用export导出环境变量。

要使更改永久生效,您可以将导出语句放入您的~/.zshrc.

要测试这是否有效:

print -l -- '+--+' '|\u26A1|' '+--+'

应显示:

在此输入图像描述

相关内容