Ctrl + / 在 Debian 10.0 上的 Zsh 5.7.1 中如何作为撤消操作?

Ctrl + / 在 Debian 10.0 上的 Zsh 5.7.1 中如何作为撤消操作?

我有一个 Debian 10.0 系统。它有 zsh 5.7.1 (x86_64-debian-linux-gnu)。在 ZSH 提示符下,我输入

foo bar baz

然后我输入alt+backspace两次。单词baz“and”bar被删除,只剩foo下“and”。

然后我输入两次ctrl+/来撤销删除。baz和字样bar再次出现。

ctrl+/作为撤消命令如何工作?我没有在任何地方看到它的定义?

$ echo / | grep -E "/|undo"  # just testing my regex
/
$ bindkey -l
.safe
command
emacs
isearch
main
vicmd
viins
viopp
visual
$ bindkey -M .safe | grep -E "/|undo"
$ bindkey -M command | grep -E "/|undo"
$ bindkey -M emacs | grep -E "/|undo" 
"^X^U" undo
"^Xu" undo
"^_" undo

我还有一个带有 zsh 5.7.1 (x86_64-apple-darwin19.0) 的 macOS Catalina 10.15.7,并且ctrl+/在那里没有执行任何操作。

答案1

没有控制字符对于Control+ /,因此终端无法自然选择可以发送的字符或字符序列。许多终端发送, 即与+^_相同的字符。这包括 xterm、rxvt、konsole 和所有基于 vte 库的终端(Gnome Terminal、Mate Terminal、lxterminal、Terminator 等),但不包括 macOS 的内置终端应用程序。Control_

Ctrl您可以通过键入+V然后Ctrl+来查看终端发送的内容/Ctrl+V表示“按字面意思插入下一个字符”(即使它会被解释为命令)。

(终端的作用参见键盘输入和文本输出如何工作?

^_是 Emacs 和具有 Emacs 键盘快捷键的应用程序中的撤消快捷方式。

相关内容