Ssh
zsh-cursor 在 ssh 上的位移
我在本地執行 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)
關於如何解決這個問題的任何提示?
我
locale
的沒有設置。我現在設置它,它的工作原理!