如何在Gnome终端中的不同模式下更改VIM光标形状

时间:2013-01-10 20:06:20

标签: vim cursor gnome-terminal

我想更改VIM的(不是gVIM的)光标,具体取决于我目前的模式。我希望:

  • 普通&可视模式=阻止光标
  • 插入&命令模式= I beam cursor

我尝试将以下代码添加到.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-Terminal(版本3.60)。不确定这是否是它无法正常工作的原因。

有关如何执行此操作的任何想法?

2 个答案:

答案 0 :(得分:1)

我有gnome-terminal 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'"

用ibeam调用它,阻止或下划线以改变光标形状。

将脚本放在/ 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

答案 1 :(得分:0)

对我来说,在将名为gnome-terminal-cursor-shape.sh的脚本脚本更改为:

之后,gnidmoos解决方案正常工作
#!/bin/sh
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/cursor_shape" --type string "$1"

(在.vimrc中使用相同的行)

聚苯乙烯。我正在运行ubuntu 14.04,GNOME Terminal 3.6.2

干杯!