2016-10-24 8 views
3

Ich würde gerne wissen, ob es eine Möglichkeit gibt, Inline-Schleifen in zsh wie in bash zu verhalten.Wie man eine Inline-Schleife in ZSH in einer einzigen Zeile (Bash-ähnliches Verhalten) erneut ausführt

Ich habe kürzlich mit zsh angefangen und bisher gefällt es mir. Es gibt eine Sache in Zsh ich möchte wie in bash, Inline-Loops verhalten.

Ich laufe oft schnelle Schleifen wie so for in a b c -> Treffer eingeben ->do -> drücken Sie die Eingabetaste und so weiter ...

Wenn ich den Befehl/Schleife erinnere in zsh zu ändern, werden Zeilen über mehr gewickelten Linien, aber in bash ist es nur eine einzige Linie.

ZSH Vorlauf:

[email protected] > for i in {a..c} 
for> do 
for> echo ${i} 
for> done 
a 
b 
c 

ZSH wiederholt < Pfeil nach oben>:

[email protected] > for i in {a..c} 
do 
echo ${i} 
done 

BASH Vorlauf:

[[email protected] ~]$ for i in {a..c} 
> do 
> echo ${i} 
> done 
a 
b 
c 

BASH wiederholt < Pfeil nach oben>:

[[email protected] ~]$ for i in {a..c}; do echo ${i}; done 

Antwort

1

Es gibt eine schöne Option in der Zsh Guide unter Züchter Editing erwähnt: es ist die singlelinezle Option; Wenn Sie dies einstellen, wird "... editieren" auf [eine Zeile beschränkt] gesetzt, wodurch das gewünschte Verhalten aktiviert wird, das Sie in Ihrer Frage erwähnt haben.

# without `singlelinezle` set 
user% for a in a b c; do echo $a; done 
# output: 
# a 
# b 
# c 
# <up-arrow> 
user% for a in a b c; do echo $a; done 

user% for a in a b c; do 
for> echo $a; 
for> done 
# output: 
# a 
# b 
# c 
# <up-arrow> 
user% for a in a b c; do 
echo $a 
done 

setopt singlelinezle 
# with `singlelinezle` set 
user% for a in a b c; do echo $a; done 
# output: 
# a 
# b 
# c 
# <up-arrow> 
user% for a in a b c; do echo $a; done 


user% for a in a b c; do 
for> echo $a 
for> done 
# output: 
# a 
# b 
# c 
# <up-arrow> 
user% for a in a b c; do\necho $a\ndone 

unsetopt singlelinezle 
Verwandte Themen