fish shell: ctrl-p 无效,但向上箭头有效

fish shell: ctrl-p is not working but ARROW UP is

我最近安装了各种 fisher 插件并更新到 fish 3.4.1,现在“ctrl-p”不再循环执行我的命令,但 ARROW UP 仍然有效。当我切换到 bash shell 时,ctrl-p 正在工作。我在 gnome 终端和 kitty 终端中观察到相同的行为。我不知道问题出在哪里,如果有人能帮助我,我将不胜感激,在此先感谢!

您的插件之一似乎反弹了 ctrl-p。

一般来说,要找出键序列绑定到什么,您需要:

  1. 通过启动 fish_key_reader 并按下它来找出键序列是什么
  2. 传递给 bind

所以,你 运行 fish_key_reader,它告诉你:

bind \cP 'do something'

这意味着 ctrl-p 发送 \cP.

所以,我们问 \cP 绑定到什么:

bind \cP

默认情况下给我们

bind --preset \cp up-or-search

(是的,在 \c 之后大小写确实无关紧要,因为 \cp\cP 编码相同)。

如果你绑定了不同的东西,它可能会打印多行,比如

bind --preset \cp up-or-search
bind \cp 'echo oops'

这里还可能发生的是您的一个插件启用了 vi-mode(即使您认为完全不相关的事情也可能发生,例如至少 one semi-popular prompt 认为它有权启用它)。

那样的话,bind \cP什么都不输出,你也可以问bind -M insert \cP问问ctrl-p在插入模式下绑定的是什么

要禁用 vi-mode 并返回默认的 emacs-inspired 绑定(ctrl-p 的绑定起源),运行 fish_default_key_bindings.