ZSH+gnome-terminal 和 VI 輸入模式:顯示 ibeam 或區塊遊標

ZSH+gnome-terminal 和 VI 輸入模式:顯示 ibeam 或區塊遊標

存在不同的方法顯示在 ZSH 中使用 VI 鍵綁定時您是處於插入狀態還是正常狀態。

Gnome 終端也允許您更改插入符號透過呼叫從區塊到 ibeam 。|gconftool-2

如何將這兩者結合起來,以便在插入模式下有一個 ibeam,在正常模式下有一個區塊?

答案1

將問題中提供的兩個答案放在一起[1,2] 在一起,我最終得到這樣的結果:

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 的答案所示。

相關內容