2016-06-11 2 views
3

Est-il possible d'inclure du code dans mon script qui ramènera le curseur au début de la ligne en cours lors de l'impression de la sortie dans REPL? (c'est-à-dire que ce que l'utilisateur voit est mis à jour). J'ai essayé \r dans @printf mais il semble faire la même chose que \n.Retour au début de la ligne dans le REPL

Jusqu'à présent, la seule solution que je trouve est à @printf plusieurs \b caractères:

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

Y at-il une meilleure façon de régler le curseur au début de la ligne actuelle? Je suis sur un système Windows.

Répondre

1

Cela fonctionne sur un mac et Linux. Pas sûr cependant à propos de Windows.

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

Le @printf aide indique qu'il utilise la mise en forme de style C, de sorte que cette réponse était fondée sur ce point. Le \t au début est juste pour rendre la sortie un peu plus facile à voir.

+0

Merci aireties pour votre aide, mais cela ne fonctionne pas sous Windows : il se déplace aussi sur une ligne ... @printf ("Secondes passées =% d% s", idx, "\ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b ") fait ce dont j'ai besoin, mais se sent un peu comme une solution rapide et sale. Je suppose que je vais continuer à utiliser plusieurs \ b à la place. – InkPen

2

Vous avez peut-être rencontré un bogue dans la macro @printf. Je viens d'essayer votre exemple, et il fonctionne maintenant très bien - à-dire qu'il fonctionne comme prévu qu'il fonctionne, la sortie two est maintenant remplacé par three: julia> @printf "one\ntwo\rthree" one three

+0

Salut Erik, merci pour votre réponse. Avez-vous testé sur une machine Windows? Je l'ai encore essayé, aussi avec Julia version 0.4.6, et le '\ r' ne fonctionne toujours pas ... – InkPen