我非常喜欢 vim,真的很想通过 vi 模式增强我的 bash 体验。但是,有一件事我非常习惯 emacs 的行为,即当使用光标向上/向下浏览 shell 历史记录时,光标位于行尾。
在 vi 模式下,情况正好相反;光标始终位于行首。在 emacs 模式下使用 bash 已经太久了……期待光标出现在大脑中真的很痛苦。
浏览 shell 历史记录时,是否有机会在 bash 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 作为键映射来执行相同的操作。
关于Bash in vi-mode : browsing shell history with cursor up/down, 光标位置不在末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844862/