
Es gibt verschiedene Methodenum anzuzeigen, ob Sie sich im Einfügen- oder Normalmodus befinden, wenn Sie die VI-Tastenkombination in ZSH verwenden.
Gnome-Terminal auchermöglicht das Ändern des Cursorsvon Block █
zu Ibeam |
mit einem Aufruf von gconftool-2
.
Wie kann ich diese beiden kombinieren, sodass ich einen I-Träger im Einfügemodus und einen Block im Normalmodus habe?
Antwort1
Beide Antworten in die Frage einfügen[1,2] zusammen komme ich zu folgendem Ergebnis:
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
Der Unterschied besteht darin, dass ich den $KEYMAP
Parameter direkt mit einer if..fi
Klausel überprüfe und den gconftool-2
Befehl ausführe, anstatt die Eingabeaufforderung zu ändern.
Antwort2
In neueren Versionen von Gnome-Terminal können Sie die folgenden Escape-Sequenzen verwenden, um den Cursor zu ändern:
\e[0 q
oder\e[ q
: Zurücksetzen auf den in den Profileinstellungen definierten Wert\e[1 q
: blinkender Block\e[2 q
: stabiler Block\e[3 q
: blinkende Unterstreichung\e[4 q
: durchgehende Unterstreichung\e[5 q
: blinkender I-Balken\e[6 q
: stabiler I-Träger
Sie können diese beispielsweise ausdrucken echo -ne '\e[5 q'
. Schließen Sie diese an Ihre Zsh-Konfiguration an, wie in der Antwort von mpy gezeigt.