Vim - 恢复文件后缩进和语法高亮被破坏

Posted

技术标签:

【中文标题】Vim - 恢复文件后缩进和语法高亮被破坏【英文标题】:Vim - indent and syntax highlight broken after recover file 【发布时间】:2012-05-11 02:42:33 【问题描述】:

我正在用 vim 编辑一个文件。我启动另一个vim来编辑同一个文件,它说/tmp/file.swp退出,按“R”恢复它。我选择了康复。但在那之后,语法高亮对该文件不起作用(其他文件仍然可以)。我尝试了 :syntax on 和一些命令,但没有奏效。

【问题讨论】:

谢谢..我自己也有同样的问题。 【参考方案1】:

我只是用简单的方法解决它。

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

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

您可以随意更改...只是一个演示。

:)

【讨论】:

【参考方案2】:

在突然崩溃后,我不得不恢复 vim 缓冲区。虽然文件已正确恢复,但我不能对语法高亮说同样的话。 (我很确定这与语言无关,但为了完整起见,我的文件是一个 python 脚本。)

据我所知,此问题通常是由于会话(如stated in this similar question)或错误加载的语法突出显示造成的。但是vim views 也会影响文件在编辑器中的显示方式。对于像我这样倾向于automatise the loading of previously stored views 的人来说尤其如此。根据这种预感我删除了我存储的视图文件并解决了问题。

请注意,这个解决方案显然是有代价的:文件将以全新的视图打开,即不会记住以前的布局(光标位置、打开/关闭的文件夹等) vim。这很明显,但我想我还是会提到它。

【讨论】:

【参考方案3】:

您可以通过键入编辑当前文件的:e % 重新运行缓冲区打开进程以再次运行所有自动命令。这将使所有 bufread* 自动命令运行,您将恢复所有内容。我相信它们是故意禁用的,以防恢复的文件中有问题,并且自定义自动命令可能会对损坏的文件造成不良影响。

【讨论】:

【参考方案4】:

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

:set filetype=c

【讨论】:

感谢您的回答。但是您能解释一下为什么尽管运行了 swp 文件恢复还是会发生这种情况。【参考方案5】:

可能需要为正确的语法设置文件类型:

" C syntax:
:set ft=c

" Java syntax:
:set ft=java

" Python syntax:
:set ft=py

" ... etc.

【讨论】:

以上是关于Vim - 恢复文件后缩进和语法高亮被破坏的主要内容,如果未能解决你的问题,请参考以下文章

vim显示行号语法高亮自动缩进的设置

VIM 适用于 LOG 文件的语法高亮配置

VIM 适用于 LOG 文件的语法高亮配置

有没有人遇到过在 iterm2 下 vim 语法高亮的问题

systemverilog的高亮显示

vim 支持 nginx配置文件 语法高亮