저는 Arch Linux를 로컬에서 실행하고 있습니다. 다음을 통해 원격 Debian 10 서버에 연결할 때 ssh
:
모든 명령이 상태 코드 0을 반환하는 한 모든 것이 정상입니다. 다른 코드가 반환되면 아래와 같이 커서와 오른쪽 프롬프트가 왼쪽으로 2문자 이동합니다. 첫 번째 프롬프트는 정상이고 Ctrl+C를 누른 후 두 번째 프롬프트는 다음과 같습니다.
----|---------------------------------
~ » user@hostname
--|-----------------------------------
~ » 130 ↵ user@hostname
그런 다음 커서 위치를 표시하기 위해 대시선을 수동으로 변경했습니다 |
. 실제로 »
명령을 입력하기 시작할 때 덮어씁니다.
그러다가 히스토리에 있는 명령어를 사용해서 변경하려고 하면 화면에 보이는 것과 다른 문자로 변경을 하게 되어 매우 헷갈리고 짜증스럽습니다.
상태 코드 0을 반환하는 다음 명령 이후에는 커서가 다시 정상이 됩니다.
이는 터미널 전체에서 발생하는 것 같습니다(콘솔에서 Alacritty 및 URXVT를 사용하여 시도했습니다).
저는 "af-magic" 테마를 사용하고 있습니다. 상태 코드를 표시하지 않는 다른 테마로 전환하면 문제가 사라집니다. 상태 코드(예: "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)
이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?
답변1
내 locale
것은 설정이 없습니다. 지금 설정했는데 작동합니다!