ZSH + терминал gnome и режим ввода VI: показ курсора ibeam или блока

3

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

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

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

ClojureMostly
источник
Я включил ссылки на мои исследования. Я сам не пытался. Stackoverflow не требует от вас каких-либо предварительных попыток, поскольку это не домашний форум.
ClojureMostly
Я только что спросил, потому что, если у вас есть собственный подход, это может быть более полезным для вас, если мы можем сосредоточиться на вашей конкретной проблеме. И не просто дать еще один фрагмент и вставить фрагмент. Но вот ты ...
mpy
Понятно, я вас неправильно понял. Я плохо разбираюсь в zhs, и мне было недостаточно важно тратить время, чтобы заняться этим. Я уверен, что другим может понравиться эта идея, поэтому я просто опубликовал ее. Кстати, прекрасно работает! Спасибо
ClojureMostly

Ответы:

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команду вместо изменения приглашения.

МРУ
источник
1
Использование gconftool для изменения профиля имеет существенный недостаток, заключающийся в том, что он сразу же влияет на все другие вкладки или окна gnome-терминала, которые используют тот же профиль.
egmont
4

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

  • \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.

Эгмонт
источник