我正在本地运行Arch。当我通过ssh
连接到远程Debian 10服务器时,游标以一种尴尬的方式运行:
只要每个命令都返回statuscode 0,一切正常。当返回另一段代码时,光标和右提示符将被移至左侧2个字符,如下所示。第一个提示是正常的,第二个是在按Ctrl+C之后:
----|---------------------------------
~ » user@hostname
--|-----------------------------------
~ » 130 ↵ user@hostname
之后,我手动更改了破折号行,以显示光标在哪里:在|
下面。实际上,当我开始输入命令时,我正在重写»
。
然后,当我尝试使用历史记录中的命令并对其进行更改时,我会将其更改为与屏幕上显示的字符不同的字符,这是非常令人困惑和烦人的。
在返回statuscode 0的下一个命令之后,光标再次恢复正常。
这种情况似乎发生在终端上(我尝试在控制台中使用Alacritty和URXVT)。
我用的是“af-魔术”这个主题。当我切换到另一个不显示状态代码的主题时,问题就消失了。不过,其他显示状态代码的主题(例如"smt")也是如此。因此,关于状态代码显示的一些东西似乎导致了这个问题。
我的.zshrc
在本地和远程都是相同的。在当地,我没有这个问题。
HISTSIZE=1000000
SAVEHIST=1000000
HISTFILE=~/.cache/zsh/history
## oh my zsh
export ZSH="$HOME/.config/zsh/oh-my-zsh"
ZSH_THEME="af-magic"
plugins=(
git vi-mode zsh-autosuggestions history-substring-search
)
ZSH_DISABLE_COMPFIX="true"
source $ZSH/oh-my-zsh.sh
## Load aliases
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
## vim mode config
# ---------------
bindkey -M vicmd 'k' history-substring-search-up
bindkey -M vicmd 'j' history-substring-search-down
# Activate vim mode.
bindkey -v
# autosuggest config
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#3a3a3a"
bindkey '^ ' autosuggest-accept
# Remove mode switching delay.
KEYTIMEOUT=5
# Change cursor shape for different vi modes.
function zle-keymap-select {
if [[ ${KEYMAP} == vicmd ]] ||
[[ $1 = 'block' ]]; then
echo -ne '\e[1 q'
elif [[ ${KEYMAP} == main ]] ||
[[ ${KEYMAP} == viins ]] ||
[[ ${KEYMAP} = '' ]] ||
[[ $1 = 'beam' ]]; then
echo -ne '\e[5 q'
fi
}
zle -N zle-keymap-select
_fix_cursor() {
echo -ne '\e[5 q'
}
precmd_functions+=(_fix_cursor)
关于如何解决这个问题有什么建议吗?
发布于 2021-02-13 09:02:14
我的locale
还没有设置好。我现在就设置它,它起作用了!
https://unix.stackexchange.com/questions/633848
复制相似问题