我已将 Bash 设置为使用 vi 键绑定与set -o vi
,但我想保留 Emacs 风格Ctrl-p和Ctrl-n绑定以循环历史。我已阅读 bash(1) 中的“绑定”部分并尝试了以下变体:
bind -m vi-insert "\C-p": previous-history
bind -m vi-insert "\C-n": next-history
不过,我发出的命令似乎都bind
没有任何效果。此后 的输出bind -P
始终保持不变。如何更改这些命令的键绑定?
答案1
从help bind
:
The non-option argument syntax is equivalent to that found in ~/.inputrc, but must be passed as a single argument: e.g., bind '"\C-x\C-r": re-read-init-file'.
我使用set -o emacs
和bind -p | grep history
来找到必要的论点。
您需要的命令是:
bind '"\C-p": previous-history'
bind '"\C-n": next-history'
我对此进行了测试,set -o vi
以验证它们是正确的命令。
另请注意,这help
是您用来了解 shell 内置命令的内容。 help
本身是一个 shell 内置函数,就像type
和 一样bind
。