Windows'ta zsh üzerinde her istemden önce neden yüzde işareti görünüyor?


13

Windows'da zsh ayarını alıyorum ve her istemin hemen üstündeki satırda ilk karakter pozisyonunda ters (beyaz üzerine siyah (siyah terminal arka plan)) yüzde sembolü alıyorum.

Genellikle bu, dosyanın sonunda yeni satır olmadığı anlamına gelir; örneğin, catbir dosyayı -ing yaparken .

Mac'imde ve hatta Windows'taki Mintty'de olmaz. Ancak ConEmu ve CMD.EXE'nin genellikle çalıştığı standart terminal uygulamasında olur.

Ben zaten unsettüm istemi dizeleri yanı sıra precmd()normalde istemin üzerine boş bir satır eklemek için kullandığım.

Herhangi bir ipucu ne olabilir?

Yanıtlar:


33

İlgili seçenek muhtemelen PROMPT_SPkılavuzdan açıklamadır

PROMPT_CR seçeneği nedeniyle komut istemi tarafından kapsanan kısmi bir satırı (yani, yeni satırla bitmeyen bir satırı) korumaya çalışın. Bu, kısmi bir çizgi bulunduğunda terminal sargısını bir sonraki satıra dönüştürmesi gereken bir dizi boşluk da dahil olmak üzere bazı imleç kontrol karakterleri çıkararak çalışır (bunun yalnızca terminalinizde tipik olan otomatik kenar boşlukları varsa başarılı olduğunu unutmayın) .

Kısmi bir çizgi korunduğunda, varsayılan olarak kısmi çizginin sonunda ters + kalın bir karakter görürsünüz: %normal bir kullanıcı için veya bir #kök için bir. Ayarlanırsa PROMPT_EOL_MARK , kısmi çizgilerin sonunun nasıl gösterileceğini özelleştirmek için shell parametresi kullanılabilir.

Yani, ya bir

unsetopt PROMPT_SP

eğer örtülü çizgiyi umursamıyorsanız (ancak sizin durumunuzda, %işareti başlangıçta aldığınızda boş bir çizgi gibi görünüyor ).

Ya da kullan

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

Bu, kısmi satırları korur, ancak %komut istemi üzerindeki bazı boş satırların maliyetini - kaldırır .

Bunu kalıcı yapmak için güncelleyin ~/.zshrc.

Yaşıyorum benim, bu davranışı yeniden edemez gibi bu kör atış cmd.exe.


1
Teşekkürler @mpy, bu beni daha fazla bilgi edinmek için doğru yere koydu. İşte ben geldim: 1) üç şey çalışır, daha fazla seçenekleri birleştirirseniz: unsetopt PROMPT_CR; PROMPT_SP ayrılmamış; ve PROMPT_EOL_MARK = "". 2) PROMPT_EOL_MARK = "" ayarının can sıkıcı ters + kalın "%" karakterinden kurtulması, ancak yine de ek bir satır beslemesi eklenmesi nedeniyle bilgi istemi nane veya Mac'ten farklı görünüyor. 3) En iyi uzlaşma olarak PROMPT_SP unsetopt ile devam ettim. 4) -o seçeneğini kullanmadığınız sürece set ve unset kullanımı çalışmaz. setopt ve unsetopt çalışması.
Düzeltirsen

@scanny: Bunun için özür dilemeliyim set. Tabii ki olmalıydı setopt- açıkçası cevabımı çok hızlı yazdım. Cevabımı güncelledim ve boş satırlarla ilgili noktayı da eklemeye çalıştım.
mpy

2

Bu yüzden zsh + oh-my-zsh ile aynı sorunu yaşıyordum.

Ben mpy ve bu satırların yardımıyla düzeltti:

PROMPT_CR'yi setopt

setopt PROMPT_SP

dışa aktar PROMPT_EOL_MARK = ""

Sadece gitmelisin -> ~ / .oh-my-zsh / temalar / XXXXXX oh-my-zsh üzerinde kullandığınız temayı açmanız gerekiyor, bu yüzden agnoster'ı örneklemem için.

Sadece bu dosyayı açın ve dosyanın sonundaki bu 3 satırı kopyalayın / geçin.

Ve düzeltildi !!

Umarım güzel bir gün geçirirsiniz ve bu bazı insanlara yardımcı olur.

BARIŞ


Lütfen cevap olarak "teşekkürler" eklemeyin. Sitede biraz zaman ayırın ve beğendiğiniz cevapları onaylamak için yeterli ayrıcalık kazanacaksınız , bu da Süper Kullanıcı'nın teşekkür etmenin bir yolu.
DavidPostill

0

ConEmu içinde nane çalıştırabilirsiniz. Bu benim için yüzdelerden kurtuldu.

İşte görev parametreleri için ne var:

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

ve komutlar:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.