2016-01-31 135 views
3

我希望vim在正常模式下突出显示与光标下方相匹配的paren/bracket/brace。但是,当我切换到插入模式时,我希望匹配停止。 (这使得它不可能看到我吧光标时,有一个突出块光标就在旁边。)在vim中关闭MatchParen的副作用插入模式

这是很容易做到:

AU InsertEnter *:NoMatchParen
AU InsertLeave *: DoMatchParen

但是,autocmds的这种组合引入了一种我无法忍受的奇怪行为:如果我在右边的vsplit或底部的split上,并切换到在左/上,然后进入插入模式,焦点回复到其他窗格。无论立即进入插入模式,还是先在正常模式下移动光标,都会发生这种情况。

特别奇怪的是,重点不是跳到最近的窗格。如果我在底部/右侧窗格中输入插入模式,光标将保持原位。

我已经试过WinEnter,CursorMoved和其他事件的几种组合,但还没有发现任何不会导致这种行为或引入更糟糕的事情。

因此,以问题的形式表述:我该如何做到这一点?

+0

您是否在寻找'set noshowmatch'? – dlmeetei

+0

否。展示功能不同。 – mmd

回答

1

Matchparen插件的命令:DoMatchParenNoMatchParen在内部使用:windo命令进行工作,该命令不幸将光标留在错误的窗口中。这已经在vim-dev list中讨论过了。目前没有解决方案。您需要在调用这些命令之前保存光标位置,然后再恢复它。

+0

很高兴知道。无需开启和关闭MatchParen,我可以随时保持它的状态,只需在插入模式下更改高亮颜色以匹配背景颜色即可。 – mmd