我经常需要用vim编辑各种XML文件,这些文件的大小千差万别-从包含几行斜线的配置文件到最大2GB的生产数据文件。在处理大文件时,启用语法高亮当然是一个非常糟糕的主意,因此,如果文件大于阈值,我想禁用它。
我不能autocommand
直接使用它来禁用语法突出显示,因为从外壳启动vim时,显然在启用语法之前执行了该命令:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
我找到了一种解决方法,可以全局禁用语法高亮显示,然后针对除xml以外的所有其他文件类型再次将其打开,如果文件的大小不超过阈值,则针对xml文件类型将其打开:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
这似乎可行,但感觉不对,一旦我想对更多文件类型和条件执行此操作,它将变得难以管理。此外,它影响所有缓冲区。在特定条件下,禁用一个缓冲区中的语法突出显示的正确方法是什么?
可能重复我如何打开具有良好的性能非常大的文件?
—
安德鲁·费里尔
尽管该Q文字写得很好,但似乎确实涵盖了该问题的大致相同的领域(实际上是其中的一个子集):vi.stackexchange.com/questions/149/…–
—
Andrew Ferrier,
@AndrewFerrier我反对。另一个问题是有关处理大文件的一般技巧。我的目标是在给定的一组限制下实现一个相当具体的难题。只需比较答案-另一个问题的答案将告诉我关闭语法,但不能针对单个文件类型在单个缓冲区中动态地执行此操作。因此,它将无法解决我更具体的问题。它们是相关的,但并非重复,因为它们要求不同的事物并导致不同的响应。
—
l4mpi'2
l4mpi,这很公平,我也没有发现文件类型。只是在这里部分测试新Beta的功能!点了。我将撤回我的重复表决。
—
安德鲁·费里尔