在 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)。但没有运气。可能升级不正确。
这意味着我正在寻找以下内容之一:
- 在OSX终端中升级bash和readline的正确方法
- 一种检查 OSX 实际使用的 bash/readline 版本的方法
- 此错误的另一个修复(以某种方式在 inputrc 中传递了 virtualedit=onemore 选项)
- 最新版本的 readline 可能重新引入错误的迹象,以及解决方案。
- 另外:如果editrc有类似的东西
注意: 我希望让 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 步骤。
所有归功于上面链接的答案。
我正在尝试在 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)。但没有运气。可能升级不正确。
这意味着我正在寻找以下内容之一:
- 在OSX终端中升级bash和readline的正确方法
- 一种检查 OSX 实际使用的 bash/readline 版本的方法
- 此错误的另一个修复(以某种方式在 inputrc 中传递了 virtualedit=onemore 选项)
- 最新版本的 readline 可能重新引入错误的迹象,以及解决方案。
- 另外:如果editrc有类似的东西
注意: 我希望让 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 步骤。
所有归功于上面链接的答案。