如何改变VIM光标形状而在Gnome终端不同的模式(How to change VIM cursor

2019-07-18 01:48发布

我想这取决于目前我在什么模式VIM的(不GVIM的)光标的变化,我想:

  • 正常及视觉模式=块光标
  • 插入&命令模式= I梁光标

我尝试添加以下代码.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终端(2.26版本)和我的gnome-terminal(3.60版本)。 不知道,这就是为什么它不工作的原因。

如何做到这一点任何想法?

Answer 1:

我已经与GNOME 3.10.2终端,我得到它通过以下步骤工作:

创建一个脚本调用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'"

并与工字梁,块调用或强调改变光标形状。

将在/ 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


Answer 2:

对我来说,gnidmoos液中将称为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

干杯!



文章来源: How to change VIM cursor shape while in different modes in Gnome Terminal