我想知道是否有办法让 zsh 中的内联循环表现得像 bash 中一样。
我最近开始使用 zsh,到目前为止我很喜欢它。在 zsh 中有一件事我想表现得像在 bash 中一样,内联循环。
我经常像这样运行快速循环 for in a b c
-> 按回车 -> do
-> 按回车等等...
当我回想起 zsh 中要更改的命令/循环时,行被多行包裹,但在 bash 中它只是一行。
ZSH 初始运行:
user@localhost > for i in {a..c}
for> do
for> echo ${i}
for> done
a
b
c
ZSH 重复<向上箭头>:
user@localhost > for i in {a..c}
do
echo ${i}
done
BASH 初始运行:
[user@localhost ~]$ for i in {a..c}
> do
> echo ${i}
> done
a
b
c
BASH 重复<向上箭头>:
[user@localhost ~]$ for i in {a..c}; do echo ${i}; done
最佳答案
Zsh Guide 中提到了一个可爱的选项在 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
关于bash - 如何在单行上重新运行 ZSH 中的内联循环(类似 bash 的行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40227992/