我在 Linux 机器和 MAC 上使用 zsh。然而,在这两个环境中,我都遇到了“问题”。
当我输入“ !! ”时,它在 zsh 中不起作用,但在 bash 中起作用。此外,它与“sudo !!”一起使用非常有用。我如何才能让它在 zsh 中工作?我需要在 .zshrc 中为某些内容添加别名吗?
答案1
您的以下选项BANG_HIST
被禁用zsh
:
BANG_HIST(+钾) <C><Z>
执行文本历史扩展,韓軟體风格,处理字符 `!' 特别地。
这可能通过以下三种方法之一实现:
通过使用
set
/明确设置它setopt
。在你的 shell 配置中的某处有一行类似这样的内容:setopt NO_BANG_HIST setopt -o NoBangHist setopt +o banghist set -o nobanghist set +o BANG_hist
大小写不重要,
_
在选项名称中将被忽略。BANG_HIST
启用该功能,而在前面添加NO
(NO_BANG_HIST
) 则禁用该功能。-o
按照名称设置功能的状态,+o
反转含义。zsh
通过-K
命令行选项启动:zsh -K
您也可以明确地设置它,
zsh +K
但可以setopt
在配置中覆盖它。通过以或 的
zsh
仿真模式启动:sh
ksh
ln -s /bin/zsh /usr/local/bin/ksh /usr/local/bin/ksh
在这种情况下,该功能也可以稍后使用来设置
setopt
,但不能通过命令行选项来设置(/usr/local/bin/ksh +K
不起作用)。
答案2
我的 zsh 有!!
我现在已经安装了 zsh,并且!!
它可以像在 bash 中一样运行。
也许您需要更新它?
我的版本是5.0.2-3ubuntu6
但是如果你的 zsh 没有它:
正如所回答的这里您需要将其添加到您的.zshrc
文件中:
alias ii='$(fc -ln -1)'
答案3
好的。看来我的 .zshrc 中有一个旧的“set opt”选项导致了这个问题。
我通过测试 .zshrc 中的每个项目找到了答案。幸运的是,这不是最后一个选项。
我稍后将测试我需要更改或删除哪些具体选项。
问候