为什么 vim 在文件恢复后无法正常工作?

Why is vim not working properly after a file recover?

我去 vim 打开一个日志文件,但被警告说找到了一个交换文件。其中一条警告建议我可能想使用 vim -r filename.log 打开文件。我这样做了,但是现在当我 'vim' 在一个文件中时,我必须键入“GG”(而不是“G”)才能将我带到最后,然后输入“gg”(而不是“ g") 让它把我带到开头。当我使用 j 和 k 向上/向下移动一行时,它突出显示了该行的一部分(请参见下面屏幕截图中的蓝色和绿色光标),而之前没有突出显示。有什么线索吗?

谢谢!

I have to type "GG" (instead of "G") to get it to take me to the end,

真奇怪...是否有可能第一个 G 被未决的击键占用?例如,如果您键入 gG,那是一个无效的命令并被忽略。所以你需要 gGG 才能真正到达文件末尾,因为第一个 G 被忽略了......这可能是正在发生的事情吗?

否则,您是否有 G 或使用 G 作为前缀的映射? :map G 是否显示任何已定义的映射?

and "gg" (instead of "g") to get it to take me to the beginning.

这是正常的。 gg 是 Vim 中的命令(在原来的 vi 中也是如此)去文件的顶部。

您是否正在考虑 less,它通过单个 g 到达顶部?

And when I use j and k to move up / down one line, it highlights part of the line (see blue and green cursors in screenshot below)

这是 matchit plug-in 的效果,它与 Vim 一起提供(在 Vim 的最新版本上,但我相信它已经与 Vim 相当长一段时间。)它默认启用,作为启动的一部分加载。

只要您将光标放在其对上,matchit plug-in 就会突出显示匹配的双括号、大括号或方括号。因此,由于您将光标放在 [ 上,Vim 将突出显示相应的 ].

whereas before there was no highlight. Any clues what could be going on?

您可能没有注意到 matchit 的效果,即使它已启用,因为它只会在您的光标位于括号顶部时触发。也许这个日志文件的不同之处在于所有行都以括号开头,这就是它如此突出的原因?

或者您的计算机中可能有不同版本或风格的 Vim,其中一些不会加载 matchit(也许您有一个“最小”Vim不支持 plug-ins?)也许你有命令 vimviview,其中一些会加载不同版本的 Vim,其行为不同。在大多数情况下,您倾向于使用其他版本,但这次由于您收到有关恢复文件并明确使用 vim -r 的消息,您最终使用了加载它的特定版本?

您可以使用 :version 命令检查您使用的 Vim 版本以及可用的功能。 (特别是,寻找“最小”,或检查 +eval 是否已启用,如果它被列为 -eval 则意味着对外部 plug-in 文件的支持将大部分被禁用。 )

您还可以检查:scriptnames以查看Vim加载的脚本文件列表,您可以检查matchit.vim是否包含在该列表中。