当一个缓冲区退出时,是否需要使用“vim语法关闭”命令?

5
我在我的vim会话中有两个缓冲区,并在我的vimrc中设置了语法高亮。我使用minibufexpl来管理缓冲区。当我使用:q退出当前缓冲区时,另一个缓冲区会自动关闭语法高亮,我必须手动使用:set syntax=on打开语法高亮。有没有人能给我一个解决方案,让一个缓冲区退出后不自动关闭语法高亮呢?谢谢!(我尝试过使用:bd而不是:q退出缓冲区,有时它会保持语法高亮,但有时不会。)

1
:set syntax=on 会强制使用 syntax/on.vim 脚本对当前缓冲区进行语法高亮,但不会启用语法高亮。 - ZyX
5个回答

3
如果您正在使用minibufexpl.vim,请将以下内容添加到您的.vimrc文件中:
let g:miniBufExplForceSyntaxEnable = 1

看起来是vim中的一个bug引起的。详细信息请参考minibufexpl版本6.3.1的发布说明

请注意,这适用于:bd,但不适用于:q


这在 v 6.5.2 版本(发布于2013年6月17日)中不起作用。 - Haozhe Xie

2
这可能有些晚了,但我也遇到了同样的问题,并发现添加以下这行代码可以解决:
set hidden

将以下内容添加到我的.vimrc文件中可解决此问题。这将使vim在输入“:q”时隐藏缓冲区而不是关闭它们。当我使用minibufexplorer导航文件时,它似乎也可以保持语法高亮。希望这可以帮到你。

1

也许你应该将这行代码加入到gvimrc文件中:

autocmd BufDelete * syntax on

已在 v6.5.2 版本中进行测试(发布于2013年6月17日)。 - Haozhe Xie

1
你可以在你的 vimrc 文件中使用 syntax enable 或者 syntax on。需要更多信息可以使用 :h syntax 命令。
然后检查一下你的语法文件是否正确,应该像这样:
au BufNewFile,BufRead *.cpp set syntax=cpp11 <-- 这是我给 cpp 文件的那一行。
希望能帮到你。

1
我已经在我的vimrc中设置了语法。重点是当我退出一个文件时,其他文件会自动关闭语法。 - Alpha Liu

0

插件出现了问题。

关闭缓冲区(失去语法高亮)后,可以通过以下方式进行调查:

:verbose set syntax?

这将显示类似于

 syntax=cpp
  Last set from C:\Program Files\Vim\vim73\syntax\syntax.vim

您可能也能够看到哪里出错了

:debug quit

如果其他方法都失败了,可以尝试逐个禁用插件(或全部删除,再逐个启用)来排除错误源。在某个时刻,问题将会出现/消失,这样你就找到了罪魁祸首。

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