Bash in vi-mode : browsing shell history with cursor up/down, 光标位置不在末尾?

标签 bash vim emacs history

我非常喜欢 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/

相关文章:

bash -/etc/ssh/sshd_config 是否支持行内注释和同一行中的多个键/值?

linux - 将两个 grep 的输出合并到一个文件中

emacs - 当我在 emacs 中使用网络模式时,为什么语法高亮会被禁用?

php - 从 php 网页运行 bash 脚本

linux - Bash 从行中删除一个字符

用于创建新编号文件的 vimscript 代码

python - Vim pymode 在异步函数定义上抛出 "invalid syntax"错误

vim - 我怎样才能看到 vim 认为我在敲什么键?

用于自定义 LaTeX 注释环境的 Emacs 语法突出显示

python - 在 emacs 中强制每行 79 个字符?