安装 Prezto 后 Ctrl-箭头不再起作用

安装 Prezto 后 Ctrl-箭头不再起作用

我的.inputrc

"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\eOc": forward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

另外,我没有触及定义指令.zprezto/modules/editor/init.zsh的任何内容。bindkey

但是,当我按下CtrlLeftCtrlRight我的终端(URxvt)闪烁时,什么也没有发生。另一方面,在 XTerm 中它是有效的。这似乎是 URxvt 问题。

答案1

~/.inputrc文件是 bash 的东西,zsh据我所知不是这样的东西。它控制 的行为readlinezsh相当于zle。您可以使用以下命令修改其行为bindkey命令。

因此,要Ctrl Left往返Right,请将这些行添加到您的~/.zshrc(可能有一个更好的地方,相当于~/.inputrc但我不知道它并且~/.zshrc有效):

bindkey "\eOc" forward-word
bindkey "\eOd" backward-word
bindkey "\e[1;5C" forward-word
bindkey "\e[1;5D" backward-word
bindkey "\e[5C" forward-word
bindkey "\e[5D" backward-word
bindkey "\e\e[C" forward-word
bindkey "\e\e[D" backward-word

答案2

显示的键绑定适用于 xterm(以及复制 xterm 行为的程序)。 urxvt是 的后代rxvt,它使用不同的键绑定。默认情况下,controlleft对于 rxvt/urxvt 发送escapeOd.你可以通过运行看到这一点

cat -v

并输入该组合键。它将回显为^[Od.同样的问题也适用于其他光标键。

urxvt提供资源设置keysym.sym(在 中引入的功能的扩展rxvt),您可以使用它可以用于修改这些终端发送的密钥以更紧密地匹配xterm。那将是这样的资源设置:

URxvt.keysym.Control-0xff51:    \033[1;5D

其中(如手册页中所示),Control是修饰符,0xff51是左光标键的代码,您可以使用xev.

要获取所有键,您必须为每个键(和修饰符)添加资源。

进一步阅读:

相关内容