2015-06-07 14 views
5

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:

  1. 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.
  2. 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.
  3. 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?

+0

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

+0

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

+0

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

Trả lời

5

Ugly nhưng hoạt động:

0$ stdout shell 'printf "99 problems\rno"' 
no problems 

CẬP NHẬT - 50% ít xấu xí!

đẹp hơn để tránh gọi printf từ vỏ:

0$stdout 'hi world',(13{a.),'12' 
12 world 

CẬP NHẬT - 75% ít xấu xí!

Nhờ một bình luận từ @Eelvex

0$stdout 'hi world',CR,'12' 
12 world 
+0

Bí quyết tuyệt vời! Bạn có thể sử dụng 'CR' cho' 13 {a.' – Eelvex

+0

Nếu bạn sử dụng nó rất nhiều, bạn có thể muốn tạo một động từ tiện ích, như sau: 'cr =: [, CR,]' tại thời điểm bạn có thể viết '' hi world 'cr' 12'' và tương tự. – kaleidic

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