
Существуют различные методыдля отображения того, находитесь ли вы в режиме вставки или в обычном режиме при использовании привязки клавиш VI в ZSH.
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 для изменения курсора можно использовать следующие 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.