Ich muss häufig verschiedene XML-Dateien mit vim bearbeiten, die sich in ihrer Größe stark unterscheiden - von Konfigurationsdateien mit einigen hundert Zeilen bis hin zu Produktionsdatendateien mit einer Größe von bis zu 2 GB. Die Syntax-Hervorhebung zu aktivieren ist natürlich eine sehr schlechte Idee, wenn es um große Dateien geht. Daher möchte ich sie deaktivieren, wenn die Datei größer als ein Schwellenwert ist.
Ich konnte dies nicht autocommand
direkt zum Deaktivieren der Syntaxhervorhebung verwenden, da der Befehl anscheinend ausgeführt wird, bevor die Syntax aktiviert wird, wenn vim von der Shell aus gestartet wird:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
Ich habe eine Problemumgehung gefunden, indem ich die Syntaxhervorhebung global deaktivieren und sie dann für alle anderen Dateitypen als xml wieder aktivieren und für den Dateityp xml aktivieren kann, wenn die Datei nicht größer als der Schwellenwert ist:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Dies scheint zu funktionieren, fühlt sich aber falsch an und wird nicht mehr zu handhaben sein, wenn ich dies für mehr Dateitypen und Bedingungen tun möchte. Außerdem beeinflusst es alle Puffer. Wie kann die Syntaxhervorhebung in einem Puffer unter bestimmten Bedingungen ordnungsgemäß deaktiviert werden?