我不知道有什么方法可以在bash(或者readline,真的)内部重新编码历史代码。
但是,一旦您找到要在末尾追加的行,就真的很难输入Shift-A吗?
如果你打算放弃 emacs 模式,那么在某个时候,你将不得不完全vi这样做并接受做事的方式。加入我们,你知道你想:-)
您需要重新映射上下游标:
bind -m vi-command '"\201": previous-history'
bind -m vi-command '"\202": next-history'
bind -m vi-command '"\203": end-of-line'
bind -m vi-command '"\e[A": "\201\203"'
bind -m vi-command '"\e[B": "\202\203"'
这会将先前历史记录,下一历史记录和行尾结束映射到不存在的键,然后向上和向下映射到这些字符的序列.如果你愿意,你可以为j/k做同样的事情,但我建议你不要管它们.这样你就可以做到这两点.
这仅在您处于命令模式时重新映射键.在我的机器上,光标已经在插入模式的行尾.如果您不这样做,则可以使用vi-insert而不是vi-command作为键映射来执行相同的操作.