如何让vim将一个字符移动到insertleave上?

时间:2011-04-30 12:12:09

标签: vim autocmd

由于mac os x terminal.app不支持许多vim视觉方面,包括当切换到插入模式时光标从一个块更改为一行,我使用osascript来表示类似的东西。

在我撰写的.vimrc文件中:

autocmd InsertEnter * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 11`j
autocmd InsertLeave * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 12`j

其中settings set 11是一组具有行光标的终端设置,settings set 12是一个具有块光标的终端设置。

这实际上工作得很好但是有一个小问题..在InsertLeave上,光标总是向左移动一个字符,这不是什么大问题,但它可能很烦人。

我试图通过将autocmd InsertLeave h放入我的.vimrc进行补偿,但无济于事(它给我一个错误)。

我应该如何告诉vim:

  1. 没有向左转?
  2. 如果以上情况不可能,请通过向右移动进行补偿

1 个答案:

答案 0 :(得分:1)

在回答问题之前,我建议您查看MacVim(如果没有)。如果您希望(或需要)坚持终端,也许像iTerm这样的其他终端将提供更多功能。无论如何,在iTerm中不存在块条之间的光标变化(至少我是这么认为的),你解决它的方法是现象,它现在已经在这里添加了书签。谢谢!


解决问题的一种简单方法是添加另一个自动命令,就像你说的那样。但是在你的中,缺少执行模式和正确的命令。

h不是命令。要执行正常模式序列,请使用:normal命令。这可能正常工作:

au InsertLeave * normal! h