Vim 语法高亮在单个文件中丢失

Vim 语法高亮在单个文件中丢失

我在单个文件上遇到了一件奇怪的事情。当我以原始名称打开文件时,突出显示会丢失(“:syntax on” 不起作用)。但如果我用另一个名称 cp 该文件并打开它,语法突出显示就会恢复。如果我将副本 mv 回原始文件名,突出显示又会消失。

我无法向您展示图像(因为我的声誉不够高),但我向你保证,如果可以的话,你会清楚地看到文件 a.js 没有突出显示,而 a_copy.js 有。

答案1

您提供的有关您的环境和配置的信息很少,所以我只能帮助您自助。

比较两个不同 JavaScript 文件的以下选项:

:verbose setlocal syntax? filetype?

然后检查列表中:autocmd是否有任何可能针对有问题的 JavaScript 文件的模式。您是否使用本地 vimrc插件?它也可能影响这一点。

如果所有这些都没有提供线索,请使用以下方法捕获命令序列

:set verbose=20 | edit a.js

并留意影响的命令'syntax'

答案2

尝试删除所有已保存的视图(即从 mkview 中删除)。如果我在注销/关闭时没有彻底退出所有 vim,我经常会遇到这个问题。如果您设置了类似

au BufWinLeave ?* mkview

在您的 .vimrc 中,您将自动获得这些视图。正如接受的答案中提到的,您可以使用以下命令找到此文件的位置:

:verbose setlocal syntax? filetype?

答案3

除此以外syntax on.vimrc您可能还需要删除目录中为这个特定文件存储的视图.vim/view

$ cd ~/.vim/view

# list all files looking for your particular file
$ ls -lt # | head -10 
...

# delete that file
$ rm ...

请注意,文件夹中的文件view/在文件系统上将具有其完整路径,并/用 替换=+

答案4

这是一个老问题,但由于这种情况已经发生过几次,所以我想我也可以分享我的解决方案。

根据建议,我通过以下方式比较了原件和复印件(带颜色):

:verbose setlocal syntax? filetype?

原来的

  syntax=
        Last set from /usr/share/vim/vim80/syntax/syntax.vim
  filetype=
        Last set from ~/.vim/view/~=+Thesis=+thesis.tex=

复制

  syntax=tex
        Last set from /usr/share/vim/vim80/syntax/syntax.vim
  filetype=tex
        Last set from /usr/share/vim/vim80/autoload/dist/ft.vim`

对我来说,解决这个问题的方法是:set filetype=tex(或您正在使用的任何文件扩展名。)我无法准确查明为什么会发生这种情况,但在我看来,它是在删除 .swp 文件后发生的。

相关内容