ZSH+gnome-terminal 和 VI 输入模式:显示 ibeam 或块光标

ZSH+gnome-terminal 和 VI 输入模式:显示 ibeam 或块光标

存在不同的方法显示您在 ZSH 中使用 VI 键绑定时是处于插入状态还是正常状态。

Gnome 终端也允许您更改插入符号通过调用从 block到 ibeam 。|gconftool-2

我怎样才能将这两者结合起来,以便在插入模式下拥有一个 ibeam,而在正常模式下拥有一个块?

答案1

将问题中提供的两个答案[12] 最终我得到了以下结果:

function zle-line-init zle-keymap-select {
    if [[ $KEYMAP == vicmd ]]; then
       gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block
    elif [[ $KEYMAP == (main|viins) ]]; then
       gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam
    fi
}
zle -N zle-line-init
zle -N zle-keymap-select

不同之处在于,我$KEYMAP直接用if..fi子句检查参数并执行gconftool-2命令,而不是改变提示。

答案2

在最新版本的 gnome-terminal 中,您可以使用以下转义序列来更改光标:

  • \e[0 q\e[ q:重置为配置文件设置中定义的值
  • \e[1 q:闪烁的方块
  • \e[2 q:稳定块
  • \e[3 q:闪烁下划线
  • \e[4 q: 稳定下划线
  • \e[5 q:闪烁的工字光束
  • \e[6 q: 稳固的工字钢

您可以通过例如打印这些内容echo -ne '\e[5 q'。将它们连接到您的 zsh 配置,如 mpy 的答案中所示。

相关内容