如何在vim会话期间保持缓冲区的语法高亮显示

如何在vim会话期间保持缓冲区的语法高亮显示,vim,Vim,当我打开一个文件时 :e x 并更改其文件类型 :set ft=plsql 我可以看到设置文件类型的效果,因为缓冲区中的关键字是根据我刚才设置的文件类型(语法)突出显示的 然后,我打开另一个文件 :e y 然后切换回我设置文件类型的文件 :e # 关键字Highlighting丢失,尽管文件类型仍然有效 :set ft? 确认文件类型为plsql 那么,我如何才能使vim在切换回文件时保持高亮显示?我假设您已经设置了无隐藏(或者更确切地说,没有设置隐藏)。这意味着,任何未在某

当我打开一个文件时

 :e x
并更改其文件类型

 :set ft=plsql
我可以看到设置文件类型的效果,因为缓冲区中的关键字是根据我刚才设置的文件类型(语法)突出显示的

然后,我打开另一个文件

 :e y
然后切换回我设置文件类型的文件

 :e #
关键字Highlighting丢失,尽管文件类型仍然有效

 :set ft?
确认文件类型为plsql


那么,我如何才能使vim在切换回文件时保持高亮显示?

我假设您已经设置了
无隐藏
(或者更确切地说,没有
设置隐藏
)。这意味着,任何未在某处显示的缓冲区都将被卸载。因此,
:ey
将使Vim完全忘记
x
。执行
:e#
时,不会返回到
x
:而是重新加载它。因为它是一个全新的缓冲区,所以您的
文件类型
当然不在那里

如果您确实将
设置为隐藏
,打开
y
将不会卸载
x
,即使它没有显示在任何地方,并且
:e#
将只显示包含
x
的缓冲区(该缓冲区已经设置了
文件类型
)。这还有一个好处,就是使Vim不那么烦人,因为您可以加载其他文件,而不必将当前的更改写入磁盘(如果您确实想在未保存更改的情况下加载另一个文件,那么Vim也不会不断地纠缠您)


编辑:这个解释似乎是假的。修复仍然是
设置隐藏的
。想想看。

谢谢你的回答。我不明白的是:你写“因为它是一个全新的缓冲区,你的文件类型当然不在那里。”。但是当我在
:e#
之后执行
:set ft?
时,它会报告
plsql
,因此文件类型似乎不会丢失。哈,你说得对。我没想到会这样。所以,也许我的“为什么”完全不正确。然而,“如何”似乎仍然有效:我不能用
设置隐藏来重现你的症状。这里有两个相关的选项:
'filetype'
'syntax'
。通常,当
'ft'
更改时,
'syntax'
也会更新。尝试
:详细设置ft?语法?
在退出
x
之前和切换回之后。您甚至可以使用语法和文件类型自动命令添加一些调试。