最近、Fedora 38でbashからzshに切り替えました。
oh my zshをインストールし、次のプラグインがあります。
plugins=(git fzf tig zsh-autosuggestions)
私の端末は奇妙に動作します。キーボードを押すとup
一部が消え、マウスの中ボタンで何かを貼り付けると変にグリッチになりますね。
また、バックスペースキーを使用してコマンドを削除すると、そのコマンドの一部が端末に残りますが、入力した新しいコマンドには影響しません。 (図2を参照してください。コマンドを削除することはできませんが、oc lo
プロンプトの先頭にあるように動作し、ls --help
正常に実行されます。)
以下は、奇妙な欠陥を示すスクリーンショットです。
文脈用語をデフォルト端末として使用していますが、Konsoleの使用中にもこの問題が発生しました。
これはoh my zshの一般的な問題ですか?
私の主なヒントは次のように定義されています。
$ typeset PROMPT
PROMPT='[%n]$fg[blue][%m]%{$fg[white]%}$(git_custom_status)[%~% ]%{$reset_color%}%B$%b '
答え1
あなたの場所:
PROMPT='[%n]$fg[blue][%m]%{$fg[white]%}$(git_custom_status)[%~% ]%{$reset_color%}%B$%b '
$fg[white]
そして、$reset_color
おそらく端末に前景色を白に変更し、自動読み込み可能機能によって定義されcolors
た色をリセットして、zshの行エディタにこれらの文字が幅0で表示されることを知らせるエスケープシーケンスです。%{...%}
$fg[blue]
$ autoload colors
$ colors
$ echo $#fg[blue]
5
これは5文字の長いシーケンスですが、端末に送信されると前景色だけが変更され、カーソルを右に5列に移動しませんが、ユーザーが指定しなかったため、行エディタは誤って解釈します。たとえば、カーソルを移動しようとすると、カーソルはどこに表示されますか?
ここでは使用できますが、%{...%}
その周辺では、$fg[blue]
高速拡張にも必要ありません。急速な拡張持つ前景色と背景色の変更に関する特別なガイドライン:%F{colour}
と%K{colour}
(デフォルトに%f
リセット%k
)なので、次のようにする必要があります。
PROMPT='[%n]%F{blue}[%m]%F{white}$(git_custom_status)[%~]%f%B$%b '
また、promptsubst
オプションが有効であり、git_custom_status
コマンドが出力する内容が有効なプロンプト文字列であると仮定します。