Mengapa tanda persen muncul sebelum setiap prompt pada zsh di Windows?

13

Saya sedang mengatur zsh di Windows dan saya mendapatkan simbol persen terbalik (hitam putih) (latar belakang terminal hitam) di posisi karakter pertama di baris tepat di atas setiap prompt.

Biasanya itu berarti tidak ada baris baru di akhir file, misalnya ketika cat-ing file.

Itu tidak terjadi pada Mac saya atau bahkan pada Mintty pada Windows. Tapi itu terjadi di ConEmu dan aplikasi terminal standar yang biasanya dijalankan oleh CMD.EXE.

Saya sudah memiliki unsetsemua string prompt saya dan precmd()yang biasanya saya gunakan untuk menambahkan baris kosong di atas prompt.

Ada petunjuk apa itu?

scanny
sumber

Jawaban:

33

Pilihan yang relevan mungkin adalah PROMPT_SP, penjelasan dari manual

Mencoba untuk mempertahankan sebagian garis (yaitu garis yang tidak berakhir dengan baris baru) yang jika tidak akan ditutup oleh prompt perintah karena opsi PROMPT_CR. Ini berfungsi dengan mengeluarkan beberapa karakter kontrol kursor, termasuk serangkaian spasi, yang akan membuat terminal membungkus ke baris berikutnya ketika ada garis parsial (perhatikan bahwa ini hanya berhasil jika terminal Anda memiliki margin otomatis, yang merupakan ciri khas) .

Ketika baris parsial dipertahankan, secara default Anda akan melihat karakter terbalik + tebal di akhir baris parsial: a %untuk pengguna normal atau #untuk root. Jika diatur, parameter shell PROMPT_EOL_MARK dapat digunakan untuk menyesuaikan bagaimana akhir garis parsial ditampilkan.

Jadi, baik Anda melakukan

unsetopt PROMPT_SP

jika Anda tidak peduli dengan garis yang ditutup-tutupi (namun dalam kasus Anda sepertinya garis itu kosong, saat Anda mendapat %tanda di awal).

Atau gunakan

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

yang mempertahankan garis parsial, tetapi menghilangkan %- dengan mengorbankan beberapa baris kosong atas prompt.

Untuk menjadikan ini permanen, perbarui ~/.zshrc.

Ini adalah pukulan buta, karena saya tidak dapat mereproduksi perilaku ini di saya cmd.exe.

mpy
sumber
1
Terima kasih @ mpy, ini menempatkan saya di tempat yang tepat untuk mempelajari lebih lanjut. Inilah yang saya temukan: 1) tiga hal berfungsi, lebih jika Anda menggabungkan opsi: unsetopt PROMPT_CR; membatalkan set PROMPT_SP; dan PROMPT_EOL_MARK = "". 2) pengaturan PROMPT_EOL_MARK = "" menghilangkan karakter +% "terbalik" yang mengganggu, tetapi masih menambahkan umpan baris tambahan, jadi prompt terlihat berbeda dari pada mintty atau Mac. 3) Saya akhirnya menggunakan PROMPT_SP yang belum disetel sebagai kompromi terbaik. 4) menggunakan set dan unset tidak berfungsi kecuali Anda menggunakan opsi -o. pekerjaan setopt dan unsetopt. Jika Anda akan memperbaikinya saya akan menerima jawaban Anda :)
scanny
@scanny: Saya harus minta maaf untuk itu set. Tentu saja, seharusnya setopt- jelas saya menulis jawaban saya terlalu cepat. Saya memperbarui jawaban saya dan mencoba memasukkan juga poin tentang baris kosong.
mpy
2

Jadi saya mengalami masalah yang sama persis dengan zsh + oh-my-zsh saya.

Saya telah memperbaikinya dengan bantuan dari mpy dan baris-baris itu:

setopt PROMPT_CR

setopt PROMPT_SP

export PROMPT_EOL_MARK = ""

Anda hanya perlu pergi ke -> ~ / .oh-my-zsh / themes / XXXXXX Anda harus membuka tema yang Anda gunakan di oh-my-zsh jadi bagi saya untuk mencontoh agnoster-nya.

Cukup buka file ini dan salin / lewati 3 baris di akhir file.

Dan itu diperbaiki !!

Semoga Anda memiliki hari yang menyenangkan dan ini akan membantu beberapa orang.

PERDAMAIAN

Mathieu Stahl-vogt
sumber
Tolong jangan tambahkan "terima kasih" sebagai jawaban. Investasikan waktu dalam situs ini dan Anda akan memperoleh hak istimewa yang cukup untuk meningkatkan jawaban yang Anda sukai, yang merupakan cara Pengguna Super mengucapkan terima kasih.
DavidPostill
0

Anda dapat menjalankan permen di dalam ConEmu. Itu menghilangkan persen untuk saya.

Inilah yang saya miliki untuk parameter tugas:

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

dan perintah:

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