2012-04-22 3 views
5

Trong giao diện điều khiển bạn có thể in "\b" để xóa nhân vật bên trái của con trỏ (backspace) như thế nàyDi chuyển một ký tự bên trái trong giao diện điều khiển

print "the last char is going to be erased\b" # the last char is going to be erased 

Làm thế nào để chỉ di chuyển một vị trí bên trái thay vì tẩy xoá (mũi tên trái)?

Trả lời

9

Nó phụ thuộc vào loại thiết bị đầu cuối và kết nối, nhưng bạn thường có thể giả định di chuyển con trỏ ANSI, vì vậy con trỏ bên trái là ESC + '[' + 'D':

print "The cursor should be here:> <\e[D\e[D" 
readline 

Xem http://ascii-table.com/ansi-escape-sequences.php để biết thêm thông tin.

+1

Đánh dấu, tôi nhận được "Con trỏ phải ở đây:><← [D ← [D" trong giao diện điều khiển cửa sổ chuẩn 7, trình tự thoát rõ ràng không được diễn giải, nhưng \ b mặc dù nó phải được theo sau với một ký tự khác . ví dụ: 'print' Con trỏ phải ở đây:> \ b "'cho" Con trỏ phải ở đây: " – peter

+1

Windows không giải thích lối thoát ANSI. Tôi không nghĩ rằng tôi có thể phát triển trên một máy Windows; Tôi cảm thấy như tôi liên tục nhảy qua hoops. – d11wtq

+0

@Mark: Có nhiều thách thức nhưng khách hàng của bạn cần có khả năng chạy mã của bạn và vì hầu hết khách hàng đều có cửa sổ, đây là cách dễ nhất. Về các công cụ ansi, có những viên đá quý mà nên làm điều này có thể nhưng tôi miễn cưỡng sử dụng chúng cho một công việc đơn giản như vậy. Sau khi tất cả nếu \ b hoạt động (rõ ràng là không có ansi), tại sao không nên có một cái gì đó như thế để di chuyển con trỏ? – peter