我有一个 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 键盘快捷键的应用程序中的撤消快捷方式。