3

Существуют различные методы, чтобы показать, используете ли вы вставку или нормальный режим при использовании привязки клавиш VI в ZSH.

Gnome-терминал также позволяет менять каретку с блока на ibeam | с вызовом gconftool-2 .

Как я могу объединить эти два, чтобы у меня был ibeam в режиме вставки и блок в обычном режиме?

2 ответа2

4

В последних версиях gnome-Terminal вы можете использовать следующие escape-последовательности для изменения курсора:

  • \e[0 q или \e[ q: сброс к тому, что определено в настройках профиля
  • \e[1 q: мигающий блок
  • \e[2 q: устойчивый блок
  • \e[3 q: мигающий подчеркивание
  • \e[4 q: постоянное подчеркивание
  • \e[5 q: мигающий I-луч
  • \e[6 q: устойчивый двутавровый луч

Вы можете распечатать их, например, echo -ne '\e[5 q' . Подключите их к вашей конфигурации zsh, как показано в ответе mpy.

3

Соединяя оба ответа, приведенные в вопросе [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 вместо изменения приглашения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .