使用 zsh bindkey 换行

使用 zsh bindkey 换行

我正在尝试创建一个键盘快捷键,将当前命令包装在终端中,如下所示:
($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

相关内容