2016-06-11 20 views
3

Ist es möglich, Code in meinem Skript enthalten, die den Cursor zurück zum Anfang der aktuellen Zeile setzen, wie es Ausgabe in der REPL druckt? (d.h. damit das, was der Benutzer sieht, aktualisiert wird). Ich versuchte \r in @printf, aber es scheint das gleiche wie \n zu tun.Zurück zum Anfang der Zeile in der REPL

Bisher ist die einzige Lösung, die ich zu @printf mehr \b Zeichen gefunden:

julia> @printf("one\ntwo\rthree") 
one 
two 
three 
julia> @printf("one\ntwo\b\bhree") 
one 
three 
julia> 

Gibt es einen besseren Weg, um die Cursor an den Anfang der aktuellen Zeile zu setzen? Ich bin auf einem Windows-System.

Antwort

1

Dies funktioniert auf einem Mac und Linux. Nicht sicher, aber über Windows.

for idx = 1:10 
    sleep(1) 
    @printf("\tSeconds Passed =%d%s", idx, '\r') 
end 

Die @printf Hilfe sagt, dass es C-Stil-Formatierung verwendet, so dass diese Antwort auf dem beruhte. Die \t am Anfang ist nur, um die Ausgabe ein wenig einfacher zu sehen.

+0

Dank aireties für Ihre Hilfe, aber das funktioniert nicht auf Windows : es bewegt sich auch eine Zeile nach unten ... @printf ("Sekunden übergeben =% d% s", idx, "\ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ "macht zwar das, was ich brauche, fühlt sich aber ein bisschen wie eine schnelle und dreckige Reparatur an. Ich schätze, ich werde stattdessen mit mehreren \ b's fortfahren. – InkPen

2

Möglicherweise haben Sie im Makro @printf einen Fehler gefunden. Ich habe gerade versucht Ihr Beispiel, und es funktioniert jetzt - dh es funktioniert, wie Sie es erwartet zu arbeiten, wird der Ausgang two nun three überschrieben: julia> @printf "one\ntwo\rthree" one three

+0

Hallo Erik, danke für deine Antwort. Hast du auf einem Windows-Rechner getestet? Ich habe es wieder versucht, auch mit Julia Version 0.4.6, und das '\ r' funktioniert immer noch nicht ... – InkPen