我正在使用带有 XFCE4 终端的 bash shell。我已将外壳配置为处于 Vi 模式。
我通过在 ~/.bashrc 文件中添加以下行来完成此操作:
set -o vi
Run Code Online (Sandbox Code Playgroud)
在正常模式下的 shell 中,我按的第一个字符在正常模式下输入,但随后我在插入模式下被抛出。
IE:
我在正常模式。如果我按 b,我将返回一个单词并进入插入模式。
如果我按 bb,我将返回一个单词,进入插入模式,然后插入 b 字符。
另一个例子,如果我按 dd,第一个 d 将被普通模式捕获,然后我将进入插入模式,其中第二个 d 将被插入。
如果我set -o vi在 shell 中手动输入(无论它是否在我的 .bashrc 中),我将不会得到这种行为,而是得到正常行为。我知道我的 .bashrc 中的更改正在被读取,因为我不在 Emacs 模式下。
我正在使用 bash 4.2.45(1)-release。
这是我的 .bashrc 的完整内容:
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
PATH=$PATH:/home/bleakcabal/.rvm/gems/ruby-2.0.0-p247/bin
set -o vi
Run Code Online (Sandbox Code Playgroud)
我在阅读@Patrick 的评论后解决了我的问题
您所描述的行为是 emacs 模式。
这让我意识到我没有处于 vi 模式。我还把
set -o vi
Run Code Online (Sandbox Code Playgroud)
输入我的 .bash_profile ,现在一切正常。这很奇怪,因为从我读到的内容来看, .bash_profile 用于登录 shell, .bashrc 用于交互式非登录 shell,我相信这就是我的情况。