Tôi đang cố gắng triển khai thanh tiến trình cho ứng dụng dòng lệnh, ví dụ:J chuyển trở lại thành dòng mới
[##### ] 50% complete
Tôi biết tôi chỉ có thể backspace để bắt đầu dòng và ghi đè, nhưng điều đó có vẻ quá tổng. Tôi muốn sử dụng trở về vận chuyển để đặt con trỏ ở cột đầu tiên và rồi ghi đè.
Vấn đề là động cơ J dường như không hiển thị ký tự trả về vận chuyển, thay vì hiển thị dòng trả về dòng mới + dấu.
Dưới đây là những gì tôi đã cố gắng:
echo 'hi',(10{a.),'world'
(nơi 10{a.
là ASCII 10, tức là vận chuyển trở lại) mà in
hi
world
echo 'hi',(13{a.),'world'
(newline) mà in
hi
world
shell 'printf "%s\r%s" hi world'
in
hi
world
shell 'printf "%s\n%s" hi world'
mà in
hi
world
Cuối cùng, tôi đã thử tất cả những điều trên trong JHS thay vì jconsole, với kết quả giống hệt nhau.
Từ đó, ba điều là rõ ràng:
- J phía trước kết thúc quay trở về vận chuyển thành một trở về vận chuyển + xuống dòng.
- Mặt trước J cũng xử lý các khoản trả về vận chuyển được tạo ra bên ngoài (ví dụ: printf) thành các dòng mới.
- J làm nhận dạng dòng mới của chính nó như được hiển thị trong ví dụ cuối cùng.
Bất kỳ trợ giúp nào?
Bạn có thể thử mã thoát ANSI, mặc dù đó là một shot dài. Hãy thử '(ESC) [80D' thay vì trả về vận chuyển (trong đó' (ESC) 'là mã ký tự 27), hoặc' (ESC) [A' sau một dòng mới. – Sneftel
Tôi không thể tìm thấy một nguồn cho điều này nhưng afaik 'CR',' LF' và 'CRLF' tất cả sản xuất cùng một ngắt dòng trong jconsole. Bạn đã thử thư viện ncurses chưa? – Eelvex
Theo '~ addons/docs/help/user/previous601.htm' nó xuất hiện ANSI không được chấp nhận cho UTF-8 bắt đầu từ J601.Sẽ cho nó một thử mặc dù. – hoosierEE