在 bash vi 输入模式中修复 <right arrow>。不能输入超过最后一个字符

Fixing <right arrow> in bash vi input mode. Cannot type beyond last character

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

set editing-mode vi

在 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

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

我发现一篇文章似乎指出 readline/bash might be the problem 的版本。但是我使用 brew 升级 bash(GNU bash,版本 4.3.42),甚至尝试按照该站点的建议安装和 link readline (6.3.8)。但没有运气。可能升级不正确。

这意味着我正在寻找以下内容之一:

注意: 我希望让 bash 中的 readline 与默认行为几乎相同(对于定期使用我的终端的其他人),但请允许我使用 vim 模式。这意味着我不需要解决方法,但需要修复。

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

在这里回答:https://unix.stackexchange.com/a/222506/198846

显然这是 OSX (3.2) 附带的 bash 版本中的错误,根据该答案,它已在 4.3 中修复。使用 bash --version 检查您的 bash 版本。

要修复,请更新 bash,例如

macports:sudo port install bash

酿造:brew install bash

安装后 bash --version 将显示它已更新(假设标准 brew/macports 路径位于 $PATH 的开头)

然后您必须将默认登录名 shell(在系统偏好设置->用户和组->右键单击您的用户->高级选项->登录名 shell)更改为以下路径新 bash:

(默认)macports:/opt/local/bin/bash

(默认)酿造:/usr/local/bin/bash

即使 which bash 显示 macports/brew,也需要更改默认登录 shell 步骤。

所有归功于上面链接的答案。