2

由于 mac os xterminal.app不支持 vim 的许多视觉方面,包括切换到插入模式时光标从块到行的变化,我使用osascriptaccopmlisch 类似的东西。

在我的.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 hmy来补偿.vimrc,但无济于事(它给了我一个错误)。

我应该如何告诉 vim:

  1. 不向左移动?
  2. 如果以上不可行,则通过向右移动来补偿
4

1 回答 1

2

在回答这个问题之前,我建议你看看 MacVim(如果你没有的话)。如果您想(或需要)坚持使用终端,也许像 iTerm 这样的另一个终端会提供更多功能。无论如何,在 iTerm 中不存在 block - bar 之间的光标更改(至少我认为是这样),而且您解决它的方法非常出色,现在在这里添加了书签。谢谢!


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

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

au InsertLeave * normal! h
于 2011-04-30T13:52:46.360 回答