【发布时间】:2016-08-07 18:46:53
【问题描述】:
简而言之,我想将Ctrl + 2 映射到我的 .zsh_history 文件中最近记录的第二个命令。通常我会输入!-2 来实现这一点。但是,为了在 shell 函数中重新创建这种行为,我编写了以下代码:
function two_back {
HISTFILE=~/.zsh_history
command=$(history | tail -n 2 | head -n 1 | cut -c 8-)
echo -n "$command"
}
这会输出我期望的值,所以对我来说似乎很好。事实上,如果我只是运行函数two_back 并按<Enter>,它会按预期工作。在我将函数绑定到某些击键后,问题似乎就显现出来了。
首先,我将函数转换为 zsh 小部件,以便可以将其绑定到一些击键...
$ zle -N two_back_widget two_back
然后我使用bindkey 命令创建映射...
$ bindkey '^@' two_back_widget
现在当我输入 Ctrl + 2 我的 z-shell 行编辑器 zle 包含我期望的输出。但是当我尝试按<Enter> 运行命令时,什么也没有发生......其他人可以重现这个吗?有谁知道为什么这不起作用?
【问题讨论】:
标签: shell command-line zsh