How to change VIM cursor shape while in different modes in Gnome Terminal

后端 未结 2 1578
孤街浪徒
孤街浪徒 2021-01-17 15:13

I would like to change VIM\'s (not gVIM\'s) cursor depending on what mode I am currently in. I would like:

  • Normal & Visual modes = block cursor
2条回答
  •  不思量自难忘°
    2021-01-17 15:59

    I have gnome-terminal 3.10.2 and I got it working with the following steps:

    Create a script called 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'"
    

    And call it with ibeam, block or underline to change cursor shape.

    Put the script in /usr/bin or /usr/local/bin, and add the following lines to your .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
    

提交回复
热议问题