在bash -o vi模式中是否有一种方法可以让提示符指示正常/命令模式等

pix*_*rth 8 vim bash

我总是在bash中使用vi模式.如果我处于命令模式或插入模式,那么直观地看是非常有用的.

例如,当我想要搜索历史记录时,/my_search在我按下之前键入任一模式看起来都是一样的Enter,到那时为时已晚.我发现自己压力Esc远远超过必要,只是为了确保我处于正确的模式......

Mic*_*ott 1

我不确定您可以在提示本身中执行此操作,但我认为光标形状/颜色指示器至少同样有用

以下设置在正常模式下提供了方形、绿色、块状光标,在插入模式下提供了细长、扁平、灰色下划线光标。可能有一种方法可以在 bash 中做到这一点,但我可以在 Zsh 中使用它,所以我将分享这个。它恰好在 URxvt 中,但也应该在 xterm 中工作。在~/.zshrc

# Modal cursor color for vi's insert/normal modes.
zle-keymap-select () {
  if [ $KEYMAP = vicmd ]; then
    echo -ne "\033]12;Green\007"
    echo -ne "\033[2 q"
  else
    echo -ne "\033]12;Grey\007"
    echo -ne "\033[4 q"
  fi
}
zle -N zle-keymap-select
zle-line-init () {
  zle -K viins
  echo -ne "\033]12;Gray\007"
  echo -ne "\033[4 q"
}
zle -N zle-line-init
Run Code Online (Sandbox Code Playgroud)

资源:https://bbs.archlinux.org/viewtopic.php? id= 95078 和https://unix.stackexchange.com/questions/115009/how-to-change-the-cursor-theme-in-cli

编辑:我发布了一份综合指南,介绍如何在 vim、zsh、tmux 和 urxvt 的组合中使用此功能。