Aar*_*lli 6 bash loops zsh inline-editing
我想知道是否有办法让 zsh 中的内联循环表现得像 bash 中一样。
我最近开始使用 zsh,到目前为止我很喜欢它。在 zsh 中有一件事我希望表现得像 bash 中的内联循环。
我经常像这样运行快速循环for in a b c-> 按 Enter -> do-> 按 Enter 等等......
当我回忆起 zsh 中要更改的命令/循环时,行被包裹在多行中,但在 bash 中它只是一行。
ZSH 初始运行:
user@localhost > for i in {a..c}
for> do
for> echo ${i}
for> done
a
b
c
Run Code Online (Sandbox Code Playgroud)
ZSH 重复<向上箭头>:
user@localhost > for i in {a..c}
do
echo ${i}
done
Run Code Online (Sandbox Code Playgroud)
BASH 初始运行:
[user@localhost ~]$ for i in {a..c}
> do
> echo ${i}
> done
a
b
c
Run Code Online (Sandbox Code Playgroud)
BASH 重复<向上箭头>:
[user@localhost ~]$ for i in {a..c}; do echo ${i}; done
Run Code Online (Sandbox Code Playgroud)
Zsh 指南中 Fancier Editing 下提到了一个可爱的选项:它就是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
Run Code Online (Sandbox Code Playgroud)