在bash vi输入模式下修复<右箭头>.无法输入超出最后一个字符

Sae*_*von 5 vi macos bash readline arrow-keys

我正在尝试在bash中使用vi模式.通过.inputrc(在OSX上):

set editing-mode vi
Run Code Online (Sandbox Code Playgroud)

在vi插入模式下,右箭头键将光标向右移动,但它在行中的最后一个字符处停止.如果光标超过了行的末尾,则将光标移动到左侧.所以,总而言之,你可以去的最右边是行中的最后一个字符.

$ cd /usr/locl/bin
# Move the cursor to the middle of the line, and fix something there
$ cd /usr/local/bin
# Now move the cursor back to the end, and write a character (/)
$ cd /usr/local/bi/n
Run Code Online (Sandbox Code Playgroud)

如上所示,这意味着您无法在不进入命令模式(并使用"a")的情况下编辑行尾.

我发现一篇文章似乎表明readline/bash的版本可能是问题所在.但是我使用brew来升级bash(GNU bash,版本4.3.42),甚至尝试安装和链接readline(6.3.8),正如该站点所推荐的那样.但没有运气.升级可能不正确.

这意味着我正在寻找以下其中一项:

  • 在OSX终端中升级bash和readline的正确方法
  • 一种检查OSX实际使用的bash/readline版本的方法
  • 这个bug的另一个修复(以某种方式传递inputrc中的virtualedit = onemore选项)
  • 最新版本的readline可能重新引入了错误和解决方案的迹象.
  • 另外:如果与editrc有类似的东西

注意:我希望在bash中使readline与默认值相同(对于其他定期使用我的终端的人),但允许我使用vim模式.这意味着我不需要解决方法,而是需要修复.

Pau*_*ian 0

您不能编辑 .bashrc 本身来使用 vi 模式吗?该命令set -o vi在我的情况下执行此操作(您最初处于编辑模式)。还要删除 .inputrc 编辑,因为两者实际上可能会在之后进行恶意交互。