重新启动后,我遇到了这个奇怪的问题,其中一些 zsh 键绑定(如 CTRL-A 和 CTRL-E)不起作用,而是分别打印^A
和^E
。
其他键绑定(如 CTRL-U)工作正常。我确信这是 zsh 的问题,而不是我的终端(urxvt)的问题,因为我可以启动 bash 并且键绑定工作正常。我怀疑我的 .zshrc 是问题所在,因为我经常关闭并重新打开终端,因此重新加载配置。
重新启动之前我做的最后一件事是编译内核。它没有执行,所以我恢复到已知的工作内核。我非常怀疑损坏的内核与它有任何关系,因为它无法在用户空间发生任何事情之前加载。
相关bindkey
输出
"^A"-"^C" self-insert
...
"^E"-"^F" self-insert
...
"^U" vi-kill-line
...
答案1
看起来行编辑器已配置为使用该vi
模式,而您似乎正在期待该emacs
模式。
在 中zsh
,引用手册:
如果 VISUAL 或 EDITOR 环境变量之一在 shell 启动时包含字符串“vi”,那么它将是“viins”,否则它将是“emacs”。 bindkey 的 -e 和 -v 选项提供了一种覆盖此默认选择的便捷方法。
所以,在这里添加
bindkey -e
即使您~/.zshrc
首选的编辑emacs
器是vi
// vim
/ elvis
...vimacs