2011-09-25 38 views
6

Tôi đã tìm thấy một lỗi gây phiền nhiễu trong khi tô màu dấu nhắc của Thiết bị đầu cuối của tôi. Nếu tôi đặt dấu nhắc của tôi sang một màu, chẳng hạn nhưĐặt màu trong Thiết bị đầu cuối dẫn đến giới hạn dòng ký tự lạ

export PS1='\e[1;34m[\e[0;31m\D{%Hh%M} \e[0;32m\u\e[[email protected]\e[0;35m\h\e[0m:\e[0;36m\w\e[1;34m]\e[0m $ ' 

sau đó nó bắt đầu để phá vỡ khi tôi nhận được một số kích thước trong dòng đầu vào:

enter image description here

Nói cách khác, khi dòng của tôi đạt đến một số giới hạn, nó bắt đầu lại chính nó! Khi tôi điền vào cùng một dòng một lần nữa, sau đó nó hoạt động tốt, đi đến dòng tiếp theo.

Có ai cũng nhìn thấy vấn đề này không? Bạn đã có một giải pháp? Vấn đề cũng xảy ra trong iTerm.

+1

Cú pháp của bạn là kinh khủng. Tại lướt qua lướt qua, bạn không có khung cứng để đóng tất cả (trước $). Có những vấn đề khác. Tôi đề nghị bắt đầu lại. Đây là hướng dẫn để tô màu: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/ –

+1

Lưu ý phụ: Khi tùy chỉnh lời nhắc, sử dụng '\ $' thay vì ký hiệu đô la. Bash sẽ hiển thị ký tự nhắc thích hợp ('$' cho người dùng bình thường, '#' cho root). –

+0

Một mẹo về phong cách khác: không thực hiện các chuỗi thoát mã cứng (tôi nhận ra hầu hết mọi người đều làm, nhưng chúng không nên). Thay vào đó, sử dụng 'tput' để phát ra các mã thích hợp cho thiết bị đầu cuối hiện tại, để nó hoạt động phù hợp với các thiết bị đầu cuối khác nhau. Đặc biệt, nó sẽ xuất ra không có gì nếu thiết bị đầu cuối không hỗ trợ màu/kiểu trong lời nhắc của bạn, thay vì phát ra các ký tự có thể gây nhầm lẫn cho thiết bị đầu cuối. ví dụ: 'PS1 =" \ [$ (tput setaf 1) \] \ h: \ W \ [$ (tput sgr0) \] \ u \ $ "' sẽ hiển thị tên máy chủ và thư mục làm việc màu đỏ. –

Trả lời

5

Đây là bản sao của Mac Terminal.app annoying bug - How to fix it? từ StackOverflow. Vấn đề là bạn phải bao quanh các ký tự điều khiển đầu cuối trong dấu ngoặc vuông \[ … \] sao cho bash shell không tính chúng khi tính toán độ dài của dấu nhắc lệnh.

Vì đây là câu hỏi shell/terminal chung và không dành riêng cho Mac OS X hoặc Terminal, điều này có lẽ nên được di chuyển sang StackOverflow và tạo một bản sao của câu hỏi khác. (Tuy nhiên, tôi không có đặc quyền để làm một trong hai.)

+3

Câu trả lời hay nhưng tôi nghĩ rằng nó có thể chấp nhận để lại nó trên Ask khác nhau như người dùng Apple với vấn đề này ít có khả năng đi đến Stackoverflow cho một câu trả lời – conorgriffin

Các vấn đề liên quan