更改光标形状(或颜色)以指示 bash 中的 vi 模式

joe*_*can 33 bash vi line-editor

澄清一下我不是问在终端中使用 vim 时如何更改光标。我希望在 Bash 的 vi 模式中在输入模式和命令模式之间切换时更改光标:

set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc... 
Run Code Online (Sandbox Code Playgroud)

我找到了一个脚本,可以在zsh 中更改模式更改时光标的颜色,但我不想只为这个功能更改 shell。

在 Bash 命令行上在命令和插入模式之间切换时,有没有办法让光标改变形状,就像在 gvim 中一样(甚至只是颜色)?

hol*_*ers 8

将这两行添加到~/.inputrc

set vi-ins-mode-string \1\e[5 q\2
set vi-cmd-mode-string \1\e[2 q\2
Run Code Online (Sandbox Code Playgroud)

  • 如果您解释它们的作用并提供一些上下文,则此答案将更加有用,例如,设置是否要求用户拥有特定版本的 Readline。 (6认同)
  • :) 这是手动条目:https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html#index-vi_002dcmd_002dmode_002dstring (2认同)
  • 我还必须在 `~/.inputrc` 中添加 `set show-mode-in-prompt on` 来完成这项工作。 (2认同)

Gra*_*eme 5

从这里复制 -命令行编辑 vim 风格

应该在bash4.3中可用- 请参阅变更日志-

j.  New user-settable variable, show-mode-in-prompt, adds a characters to the
    beginning of the prompt indicating the current editing mode.
Run Code Online (Sandbox Code Playgroud)

bash4.3 目前处于rc阶段,您应该能够在不从源代码编译的情况下获得大多数发行版的包,尽管不在主存储库中。例如。Ubuntu的(AMD64)这里和Debian(实验回购)在这里


Jer*_*lim -1

不久前,当我从 Gvim 过渡到 Console Vim 时,我在AskUbuntu上问了同样的问题。

我收到了一个答案,但它涉及切换 gnome 终端设置,以及跨终端应用这些设置。因此,gnome 终端光标有时可能会卡在错误的状态。

我仍然对您是否获得满意的解决方案感兴趣,但随着时间的推移,我已经适应了光标中缺乏模式状态信息的情况。也许我只是更频繁地按转义键(例如,esc以确保我处于命令模式;esc i以确保我处于插入模式);也许我会看屏幕底部显示的状态;也许我刚刚内化了这种模式。

  • 只是为了澄清,你的问题与我的问题**不**相同。您询问如何在控制台上的 Vim 中更改光标。[Vim wiki](http://vim.wikia.com/wiki/Configuring_the_cursor) 上对此有详细记录。我想知道如何在 [Bash 的 vi 模式](http://www.catonmat.net/blog/bash-vi-editing-mode-cheat-sheet/) 中执行此操作。 (4认同)