Vim - 恢复文件后缩进和语法高亮失效

5
我正在使用vim编辑一个文件,我启动了另一个vim来编辑相同的文件,它说“/tmp/file.swp”已存在,按“R”键进行恢复。我选择恢复。但是之后,该文件的语法高亮不起作用了(其他文件仍然正常)。我尝试了:syntax on和一些命令,但都不起作用。
5个回答

8
你可以尝试使用以下命令来指定类型。例如,对于c文件:

您可以尝试使用以下命令来指定类型。例如,对于c文件:

:set filetype=c

谢谢您的回答。但是,您能解释一下为什么在运行swp文件恢复后仍然会发生这种情况吗? - Abhinav

2

我刚刚用一种简单的方法解决了它。

我找到了文件夹 ~/.vim/view/ 并删除了关于我刚刚恢复的 py 文件的记录...

cd ~/.vim/view && ls -alh | grep filename_1 | awk '{print $9}' | xargs rm

您可以根据您的喜好进行更改...这只是一个演示。

:)


1
我在突然崩溃后需要恢复vim缓冲区。虽然文件已正确恢复,但语法高亮并非如此。(我相信这与语言无关,但为了完整起见,我的文件是一个Python脚本。)
据我所知,这个问题通常是由于会话或错误加载的语法高亮引起的,正如类似问题中所述。但是vim视图也会影响编辑器中文件的显示方式。对于像我这样倾向于自动加载先前存储的视图的人来说,情况尤其如此。遵循这个想法,我删除了我的存储视图文件并解决了问题。
请注意,这种解决方案显然是有代价的:文件将使用全新的视图打开,即vim不会记住以前的布局(光标位置、打开/关闭的文件夹等)。这很明显,但我还是想提一下。

0

您可以重新运行缓冲区打开过程,通过键入:e %来编辑当前文件,以便再次运行所有自动命令。这将使所有bufread*自动命令运行,并且您将恢复所有内容。我相信它们被有意地禁用,以防恢复的文件中存在问题,并且自定义自动命令可能会对损坏的文件执行某些不良操作。


0
可能需要设置文件类型以获得正确的语法:
" C syntax:
:set ft=c

" Java syntax:
:set ft=java

" Python syntax:
:set ft=py

" ... etc.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接