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 - 恢复文件后缩进和语法高亮被破坏的主要内容,如果未能解决你的问题,请参考以下文章