2016-10-24 13 views
3

zsh에서 인라인 루프를 사용하여 bash에서 동작하는 방법이 있는지 알고 싶습니다.한 줄로 ZSH에서 인라인 루프를 다시 실행하는 방법 (bash와 비슷한 동작)

저는 최근 zsh를 사용하기 시작했으며 지금까지 저는 그것을 좋아합니다. zsh에는 bash, 인라인 루프처럼 작동하고 싶은 것이 하나 있습니다.

나는 종종 이렇게 for in a b c처럼 빠른 루프를 실행 -> 히트 입력 ->do -> 히트 입력하고 난 zsh을에서 변경 명령 ​​/ 루프를 불러올 때 등등 ...

, 라인은 여러 감싸는 하지만 bash에서는 단 한 줄에 불과합니다.

zsh을 초기 실행 :

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

zsh을 반복 <이> 위쪽 화살표 :

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

BASH 초기 실행 :

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

BASH 반복을 <은> 위쪽 화살표 :

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

답변

1

팬시 편집 아래 Zsh Guide에 언급 된 멋진 옵션이 있습니다 : singlelinezle 옵션입니다. 이를 설정하면 "편집을 [한 줄로 제한]"이라는 질문에 언급 된 원하는 동작이 활성화됩니다.

# 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