关于 zsh 中的 Alt+x 以及如何将 Alt+x 绑定到其他内容

关于 zsh 中的 Alt+x 以及如何将 Alt+x 绑定到其他内容

当我输入 时Alt-xexecute:会弹出:

~ % 
execute: _

我可以继续输入(空格不起作用):

~ %        
execute: what'sthis

Q1:这次促销有什么用?

Q2:如何将此快捷键修改为其他按键绑定?因为M-x在emacs中相当有用,而且我经常在emacs中使用shell,所以两者冲突。

我谷歌了几个小时,但仍然没有答案(也许我的关键字不正确--谷歌:“zsh”+“excute:”,“谷歌:zsh键绑定bindkey

答案1

如果你这样做:

bindkey | grep -F '^[x'

或者简单地:

bindkey '^[x'

或者如果对如何表达 Alt+x 有疑问:

bindkey | grep -w x

你会看到的:

"^[x" execute-named-cmd

这是绑定到 ESC x 的小部件的名称,大多数终端在按下时会发送 ESC x 字符序列Alt+x

info zsh execute-named-cmd

会告诉您该小部件的作用(您可能需要zsh-doc在某些系统上安装该软件包)。

顾名思义,它会提示执行命令。这里的命令是 zsh 小部件、编辑器命令。这相当于emacs' Meta-x,只不过它是 zsh 编辑器命令而不是command (该命令在 中emacs调用)execute-extended-commandemacs

例如,如果在该提示下键入并按backward-delete-charReturn它将调用默认绑定到 的小部件Backspace。您可以在 中执行完全相同的操作emacs

相反,如果您键入descTab(Tab将其填写到describe-key-briefly,默认情况下未绑定到任何键的小部件,也可以在 中找到emacs) 并按Return,您将看到另一个提示:

$
Describe key briefly: _

比如,你可以按一下,Alt+x看看它会做什么。然后你会得到:

"^[x" is execute-named-cmd

如果您在 中执行相同操作emacs,您将看到:

M-x runs the command execute-extended-command

要查看小部件列表,对于非内置小部件,请运行zle -alzle -l列出bindkey按键绑定。

你可以绑定Alt+x到其他东西

bindkey "^[x" some-widget

相关内容