Tại sao một số lệnh (thường dài) bị cắt xén trong bash & zsh?


10

Nhiều lần khi tôi nhập một lệnh dài trong bash hoặc zsh (đây là hai shell duy nhất tôi tích cực tôi đã thấy điều này), con trỏ cong vênh đến một nơi nào đó ở giữa chuỗi tôi đang nhập, bất kỳ ai cũng có thể giải thích tại sao đây là, và nếu một cái gì đó có thể được thực hiện về điều này?

Tôi đã nhận thấy rằng điều này thường xảy ra khi tôi duyệt lịch sử của trình bao (sử dụng các phím mũi tên), khi tôi gặp một mục dài, mục mới, dài sẽ trộn với mục trước đó, hiển thị văn bản bị cắt xén.

Tôi có một ví dụ với các chuỗi ngắn, mà tôi chỉ nhận thấy:

Lịch sử chứa:

mkdir sune1
mkdir sune2

Nếu tôi điều hướng đến mkdir sune1, và sau đó mkdir sune2, tôi sẽ mong đợi dòng lệnh của mình sẽ trở thành mkdir sune2(vì đây là những gì tôi đã điều hướng đến) - nhưng thay vào đó tôi nhận được mkdir1sune2.

Tôi đã nhận thấy điều này thường xuyên trong nhiều năm, nhưng không bao giờ để nó làm phiền tôi quá nhiều, nhưng tôi nghĩ rằng đã đến lúc phải thay đổi! Vậy, có ý kiến ​​gì không?

Câu trả lời:


8

Chuỗi dấu nhắc của bạn có thể đã thoát không chính xác các ký tự không in. Nếu bạn có bất cứ điều gì như thay đổi màu sắc trong lời nhắc của mình, bạn cần đặt \[\]xung quanh các chuỗi thoát thiết bị đầu cuối để bash có thể nói rằng chúng không chiếm dung lượng trên màn hình - nếu không, nó sẽ tính toán sai vị trí của lệnh thực tế trên màn hình và cập nhật nó ở sai chỗ Xem phần này từ TLDP . Trong zsh, đặt %{%}xung quanh các chuỗi thoát.


Tôi thực sự có màu sắc trong lời nhắc của mình, tôi sẽ thử thoát chúng hoặc loại bỏ chúng và xem nếu điều đó có ích. Cảm ơn!
Jonatan

Cân nhắc sử dụng mô-đun màu của zsh. Cần tránh các lỗi stackoverflow.com/questions/6159856/ Kẻ
Francisco
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.