我正在尝试创建一个键盘快捷键,将当前命令包装在终端中,如下所示:
($current_command && say done) || say error
我已经让它部分工作了:
# ~/.zshrc
bindkey -s "^B" "&& say done) || say error"
我似乎无法弄清楚如何(
在终端中当前命令的开头插入。这可能吗?
答案1
我想到第一个可能性是使用 zle 小部件,这样你就可以完全控制命令行——呂是个zsh 命令行编辑器。
看一下此代码片段:
talktome() {
BUFFER="($BUFFER"
BUFFER="$BUFFER && say done) || say error"
(( CURSOR++ ))
}
非常基础,没有任何花哨的功能,但这样更容易理解。$BUFFER
保存当前命令行,这段代码所做的就是(
在开头添加一个,在结尾添加其他内容。我添加的唯一便利是将光标向右移动一个位置,这样它就位于输入命令的末尾。(这是必要的,因为我们添加了左括号。)
现在你只需要宣布嘚这个函数应该充当一个小部件并分配一个键绑定,就像这样
zle -N talktome
bindkey "^B" talktome