web-dev-qa-db-ja.com

Windowsのzshで各プロンプトの前にパーセント記号が表示されるのはなぜですか?

Windowsでzshを設定し、すべてのプロンプトのすぐ上の行の最初の文字位置に逆(白地に黒(黒の端末の背景))パーセント記号を表示しています。

通常、これは、ファイルの末尾に改行がないことを意味します。たとえば、ファイルをcat-する場合などです。

それは私のMacでも、WindowsのMinttyでも起こりません。しかし、それはConEmuとCMD.EXEが通常実行される標準のターミナルアプリで発生します。

私はすでにすべてのプロンプト文字列と、プロンプトの上に空白行を追加するために通常使用するprecmd()unsetしました。

それが何であるかについての手掛かりはありますか?

13
scanny

関連するオプションはおそらくPrompt_SPであり、マニュアルからの説明です

Prompt_CRオプションが原因でコマンドPromptでカバーされる部分的な行(つまり、改行で終わっていない行)を保持しようとします。これは、一連のスペースを含むいくつかのカーソル制御文字を出力することで機能します。これにより、部分的な行が存在する場合に端末が次の行に折り返されます(これは、端末に自動マージンがある場合にのみ成功します。これは一般的です)。 。

部分行が保持されている場合、デフォルトでは、部分行の最後に逆+太字が表示されます。通常のユーザーの場合は%、ルートの場合は#です。設定されている場合、シェルパラメータPrompt_EOL_MARKを使用して、部分行の終わりの表示方法をカスタマイズできます。

だから、あなたはどちらかをします

unsetopt Prompt_SP

隠蔽された行を気にしない場合(ただし、最初に%記号が表示されるため、あなたの場合は空の行のように見えます)。

または使用

setopt Prompt_CR
setopt Prompt_SP
export Prompt_EOL_MARK=""

これは部分的な行を保持しますが、%を削除します-プロンプトでいくつかの空行を犠牲にします。

これを永続的にするには、~/.zshrcを更新します。

cmd.exeではこの動作を再現できないため、これはブラインドショットです。

33
mpy

そのため、zsh + oh-my-zshでもまったく同じ問題が発生していました。

私はmpyとそれらの行の助けを借りてそれを修正しました:

setopt Prompt_CR

setopt Prompt_SP

エクスポートPrompt_EOL_MARK = ""

->〜/ .oh-my-zsh/themes/XXXXXXに移動する必要があります。oh-my-zshで使用しているテーマを開く必要があります。

このファイルを開いて、ファイルの最後にある3行をコピー/過ぎてください。

そして、その修正済み!

良い一日をお過ごしください。これが一部の人々の助けになることを願っています。

平和

2

ConEmu内でminttyを実行できます。それは私のためにパーセントを取り除きました。

これが私がタスクパラメータに持っているものです:

/icon "%ConEmuDrive%\msys64\msys2.ico"

およびコマンド:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
0
Bill Burdick