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