Как изменить форму курсора VIM в разных режимах в терминале Gnome

Я хотел бы изменить курсор VIM (не gVIM) в зависимости от того, в каком режиме я сейчас. Я бы хотел:

  • Нормальный и визуальный режимы = курсор блока
  • Режимы вставки и команды = курсор луча

Я попытался добавить следующий код в .vimrc, но он не сработал.

if has("autocmd")
  au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
  au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"
  au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
endif

Я получил этот бит кода из http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes, но он говорит, что он предназначен для Gnome-Terminal (версия 2.26), и у меня есть Gnome -Терминал (версия 3.60). Не уверен, что именно по этой причине он не работает.

Любые идеи о том, как это сделать?

Ответ 1

У меня есть gnome-terminal 3.10.2, и я получил его работу со следующими шагами:

Создайте script под названием gnome-terminal-cursor-shape.sh:

#!/bin/sh
DEFAULTPROF=`dconf read /org/gnome/terminal/legacy/profiles:/default`
DEFAULTPROF=`echo "$DEFAULTPROF" | sed -e "s/^'/:/" -e "s/'$//"`
dconf write /org/gnome/terminal/legacy/profiles:/$DEFAULTPROF/cursor-shape "'$1'"

И вызовите его с помощью ibeam, block или underline, чтобы изменить форму курсора.

Поместите script в /usr/bin или/usr/local/bin и добавьте следующие строки в ваш .vimrc:

if has("autocmd")
    au InsertEnter *
        \ if v:insertmode == 'i' |
        \   silent execute "!gnome-terminal-cursor-shape.sh ibeam" |
        \ elseif v:insertmode == 'r' |
        \   silent execute "!gnome-terminal-cursor-shape.sh underline" |
        \ endif
    au InsertLeave * silent execute "!gnome-terminal-cursor-shape.sh block"
    au VimLeave * silent execute "!gnome-terminal-cursor-shape.sh block"
endif

Ответ 2

Для меня решение gnidmoos работало после смены сценария script с именем gnome-terminal-cursor-shape.sh на:

#!/bin/sh
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/cursor_shape" --type string "$1"

(используя те же строки в .vimrc)

Ps. Я запускаю ubuntu 14.04, терминал GNOME 3.6.2

Ура!