bash - 如何在单行上重新运行 ZSH 中的内联循环(类似 bash 的行为)

标签 bash loops zsh inline-editing

我想知道是否有办法让 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/

相关文章:

linux - AWK 是否可以读取时间字段并使用它进行排序?

reactjs - 使用 React.js 循环音频列表

zsh - 编写 ZSH 自动完成功能

linux - grep -c 不工作

regex - 从文本文件中提取所有数字并将它们存储在另一个文件中

regex - 删除所有 Bash 评论

Java "break"似乎打破了两个嵌套的 for 循环

r - 将新列添加到数据框列表,然后添加名称完整的 'unlist'?

java - 使用 zip 命令创建 WAR 文件是否会影响我的 Web 应用程序的性能?

emacs - Emacs 中的 zsh 输出垃圾字符