2012-05-14 21 views
17

Tôi đã xem bản trình diễn này khi đã in một đoạn văn bản (như bạn đã nhận được khi gõ some-command --help) rồi sau đó nhảy lên một vài từ khóa trong văn bản và thay đổi màu văn bản, sau khi nó đã được in trong nhà ga.Làm thế nào để bạn chỉnh sửa văn bản hiện có (và di chuyển con trỏ xung quanh) trong thiết bị đầu cuối?

Điều đó có vẻ điên rồ đối với tôi. Họ đã làm như thế nào?

Bắt đầu suy nghĩ về nó, tôi đoán stdoutstdin về mặt kỹ thuật là "luồng IO", vì vậy có thể đó là biến cố định liên tục theo dõi vị trí của con trỏ? Tôi nhớ làm điều gì đó như thế khi xây dựng một trình phân tích ngôn ngữ.

Mục tiêu sẽ là: giả sử bạn nhập thông tin sau vào bảng điều khiển và kết quả là một mảng trống vì trong Node.js, tất cả đều không đồng bộ và chúng tôi không muốn viết hàm async mọi lúc trong bảng điều khiển:

$ node app.js 
> App.User.all() 
=> [] 

sau đó, khi gọi lại async thực hiện, bạn quay trở lại và chỉnh sửa => [] để bao gồm các kết quả:

$ node app.js 
> App.User.all() 
=> [#<User id:1>, #<User id:2>...] 

đó sẽ là tuyệt vời để ít nhất biết làm thế nào để thực hiện, ngay cả khi có một nhiều vấn đề khác cần giải quyết (không liên quan cho câu hỏi này. Và tôi biết bạn có thể xác định một cuộc gọi lại toàn cầu và làm một cái gì đó như App.User.all(_c)).

Làm thế nào để bạn chỉnh sửa đầu ra đầu cuối sau khi nó đã được in?

Trả lời

39

Cuối cùng phát hiện ra rằng "demo":

+0

Điều quan trọng cần lưu ý là 2 mã cuối cùng (Lưu vị trí con trỏ và vị trí con trỏ khôi phục) không được hỗ trợ ở mọi nơi. Như đã nêu trong nguồn thứ hai do bạn cung cấp: 'Hai mã sau không được nhiều trình giả lập thiết bị đầu cuối vinh danh. Chỉ những cái duy nhất mà tôi biết là xterm và nxterm - mặc dù phần lớn các trình mô phỏng đầu cuối dựa trên mã xterm.' – GGG

+2

Không thể được sử dụng trong các chuỗi mẫu hoặc chế độ nghiêm ngặt, nhưng bạn có thể thay thế bát phân. \ 033' với hex '\ x1b' hoặc unicode' \ u001b'. –

0

Nếu bạn đang làm việc trong Mac OX X, tôi tin rằng chương trình Eddie thực hiện điều gì đó như "chỉnh sửa đầu ra của thiết bị đầu cuối sau khi nó đã được in". (xem "Eddie (trình soạn thảo văn bản) tại Wikipedia").

Trong menu tệp, chọn "Mới" và sau đó trong "Cài đặt/Cài đặt tài liệu ...", hãy chọn "Cửa sổ Shell". Sau đó, hãy thử một vài lệnh unix: date, ls, cal, v.v. Sau đó, đặt con trỏ của bạn và chỉnh sửa chúng.

Tôi đã thử với Nút nhưng tôi không thể cài đặt nút (Nút) trong Mac OS X 10.5.8.

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