2016-10-04 12 views
0

マイ.zsh設定は、次の行を持って再描画した後、前の行が削除されます:ターミナルウィンドウが狭すぎる場合には、たびにプロンプ​​トが再描画されていることである何が起こるPS1の設定は、各プロンプトが

function zle-line-init zle-keymap-select { 
    VIM_PROMPT="${${KEYMAP/vicmd/ [NORMAL]}/(main|viins)/}" 
    PS1=$'\e[0;36m%n\e[m at \e[0;33m%m\e[m in \e[0;32m%~\e[m\e[0;34m$(vcs_info_wrapper)\e[m\e[1;33m$VIM_PROMPT\e[m\n$ ' 
    zle reset-prompt 
} 

前の行が削除されます。その後、私はエスケープを押すと、私は私を押すと

first line 
some text here 
sergiyb at wing in ~ [master *] [NORMAL] 
$ 

は今、私はこの

first line 
sergiyb at wing in ~ [master *] 
$ 
をゲット

first line 
some text here 
another text here 
sergiyb at wing in ~ [master *] 
$ 

:たとえば、のは、私は次のプロンプトしているとしましょう

同様に、コマンドlsを入力すると、すべてのファイルがリストされますが、最後の行が削除されます。

sergiyb at wing in ~ [master *] 
$ ls test_dir_with_files_1_to_10 
file1 file2 file4 file6 file8 

しかし、端末ウィンドウが十分に広い場合、これは起こりません。

sergiyb at wing in ~ [master *] 
$ ls test_dir_with_files_1_to_10 
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 

また、自分のPS1回線を短くしようとすると、ユーザー名を削除することで、端末の幅をさらに小さくするまで、それは起こりません。

これを引き起こす原因は何か、またどのように解決できますか?

答えて

2

zshは、端末がANSIエスケープコードを印刷可能な文字として表示しないことを知らないため、プロンプトのサイズを正確に判断できません。代わりにzshの独自の書式設定エスケープを使用してください。

PS1=$'%F{cyan}%n%f at %F{yellow}%m%f in %F{green}%~%F{blue}$(vcs_info_wrapper)%B%F{yellow}$VIM_PROMPT%f%b\n$ ' 
+0

これで明るく暗い黄色を帯びることはできますか? ANSIエスケープコードでは、これらは '\ e [0; 33m'と' \ e [1; 33m'です。 –

+1

'%B /%b'ペアは、2番目の黄色い単語に対して太字/明るくする必要があります。 – chepner

+0

ありがとうございました。それは魅力のように働く。 –

関連する問題