我喜欢通过长注释行来直观地划分源代码:在 C++ 中我使用 80 个/
字符,在 Python 中我使用 80 个#
字符,等等。多年来,我注意到当我四处移动时,Vim 偶尔会出现故障(停止响应约半秒钟左右);今天我发现这只发生在我的分隔符行上。
例如:
line 1
line 2
////////////////////////////////////////////////////////////////////////////////
line 4
line 5
当光标位于第 3 行的任意位置时,任何移动(向上、向下、向上翻页、向下翻页、向左、向右、、、$
... 0
)几乎总是会出现延迟;在其他行上则不会出现这种情况。
玩弄这个,我发现:
- 延迟似乎发生在行上任何地方总共有 40 个或更多符号(
/
、-
、=
、.
等#
)的行上,不包括_
(可能是因为下划线包含在 Vim 的定义中word
)。 - 对于较长的行,延迟似乎不会增加。例如,1000 个
/
字符的行与 40 个字符的行的延迟相似/
。 - 仅当从该线开始“新”移动时才会发生延迟。使用 OS 按键重复移动穿过该线不会增加延迟。
- 延迟似乎与语法高亮或插件无关:我看到
vim -u NONE
、syntax off
和有相同的行为filetype=
。 - GUI Vim (gvim) 似乎没有这个问题。
我在 MacBook Pro 上的终端应用程序中使用来自 macports 的 MacVim 8.0,但 Apple 提供的默认 Vim 7.4 具有相同的行为。
我无法在 Google、Stack Overflow 或 Super User 上找到对此的任何提及,但它在我的系统上很容易重现。
这是一个已知问题吗?是否有一个运行时设置或构建选项可以控制这个问题(一行上支持的最大符号数或其他),或者有缓解这个问题的解决方法?