Tại sao một dấu phần trăm xuất hiện trước mỗi lời nhắc trên zsh trong Windows?


12

Tôi nhận được zsh được thiết lập trong Windows và tôi nhận được biểu tượng phần trăm ngược (màu đen trên nền trắng (nền thiết bị đầu cuối màu đen)) ở vị trí ký tự đầu tiên trong dòng ngay phía trên mỗi dấu nhắc.

Thông thường, điều đó có nghĩa là không có dòng mới ở cuối tệp, ví dụ như khi cat-ing một tệp.

Điều đó không xảy ra trên máy Mac của tôi hoặc thậm chí trên Mintty trên Windows. Nhưng điều đó xảy ra trong ConEmu và ứng dụng thiết bị đầu cuối tiêu chuẩn mà CMD.EXE thường chạy.

Tôi đã có unsettất cả các chuỗi nhắc của mình cũng như các chuỗi precmd()tôi thường sử dụng để thêm một dòng trống phía trên dấu nhắc.

Bất kỳ manh mối những gì nó có thể được?

Câu trả lời:


28

Tùy chọn có liên quan có lẽ là PROMPT_SP, khám phá từ hướng dẫn

Cố gắng duy trì một dòng một phần (tức là một dòng không kết thúc bằng một dòng mới) nếu không sẽ bị che bởi dấu nhắc lệnh do tùy chọn PROMPT_CR. Điều này hoạt động bằng cách xuất ra một số ký tự điều khiển con trỏ, bao gồm một loạt khoảng trắng, sẽ làm cho thiết bị đầu cuối quấn sang dòng tiếp theo khi có một dòng một phần (lưu ý rằng điều này chỉ thành công nếu thiết bị đầu cuối của bạn có lề tự động, điển hình) .

Khi một dòng một phần được bảo toàn, theo mặc định, bạn sẽ thấy một ký tự nghịch đảo + in đậm ở cuối dòng một phần: một %cho người dùng bình thường hoặc #cho một gốc. Nếu được đặt, tham số shell PROMPT_EOL_MARK có thể được sử dụng để tùy chỉnh cách hiển thị kết thúc của một phần dòng.

Vì vậy, hoặc bạn làm một

unsetopt PROMPT_SP

nếu bạn không quan tâm đến dòng được che đậy (tuy nhiên trong trường hợp của bạn, nó dường như là một dòng trống, khi bạn nhận được %dấu hiệu ở đầu).

Hoặc dùng

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

trong đó bảo tồn các dòng một phần, nhưng loại bỏ %- với chi phí của một số dòng trống qua dấu nhắc.

Để làm điều này vĩnh viễn, cập nhật của bạn ~/.zshrc.

Đây là một cảnh quay mù, vì tôi không thể tái tạo hành vi này trong tôi cmd.exe.


1
Cảm ơn @mpy, điều này đưa tôi đến đúng vị trí để tìm hiểu thêm. Đây là những gì tôi đã đưa ra: 1) ba điều hoạt động, hơn nữa nếu bạn kết hợp các tùy chọn: unsetopt PROMPT_CR; không cài đặt KHUYẾN MÃI; và PROMPT_EOL_MARK = "". 2. 3) Tôi đã kết thúc với việc không được khuyến khích KHUYẾN MÃI là sự thỏa hiệp tốt nhất. 4) sử dụng set và unset không hoạt động trừ khi bạn sử dụng tùy chọn -o. setopt và unsetopt làm việc. Nếu bạn sửa, tôi sẽ chấp nhận câu trả lời của bạn :)
scanny

@scanny: Mình phải xin lỗi vì set. Tất nhiên, nó nên như vậy setopt- rõ ràng tôi đã viết câu trả lời của mình quá nhanh. Tôi đã cập nhật câu trả lời của mình và cố gắng đưa vào quan điểm về các dòng trống.
mpy

2

Vì vậy, tôi đã có cùng một vấn đề với zsh + oh-my-zsh của tôi.

Tôi đã sửa nó với sự trợ giúp từ mpy và những dòng đó:

thiết lập PROMPT_CR

setopt KHUYẾN MÃI

xuất PROMPT_EOL_MARK = ""

Bạn chỉ cần truy cập -> ~ / .oh-my-zsh / Themes / XXXXXX Bạn cần mở chủ đề mà bạn đang sử dụng trên oh-my-zsh để tôi ví dụ về agnoster của nó.

Chỉ cần mở tệp này và sao chép / qua 3 dòng đó ở cuối tệp.

Và nó đã được sửa !!

Hy vọng bạn có một ngày tốt đẹp và điều này sẽ giúp một số người.

HÒA BÌNH


Vui lòng không thêm "cảm ơn" làm câu trả lời. Đầu tư một chút thời gian vào trang web và bạn sẽ có đủ đặc quyền để nâng cao câu trả lời bạn thích, đó là cách nói siêu cảm ơn của bạn.
DavidPostill

0

Bạn có thể chạy mintty bên trong ConEmu. Điều đó đã thoát khỏi phần trăm cho tôi.

Đây là những gì tôi có cho các tham số nhiệm vụ:

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

và các lệnh:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.