Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[VI] Extralange Zeilen einfärben

2 views
Skip to first unread message

Andreas Kohlbach

unread,
Nov 16, 2023, 6:08:32 PM11/16/23
to
VIM erlaubt per Default das Einfärben von maximal 3000 Zeichen pro Zeile.

Ich habe Dateien, die länger sind.

Laut Suchergebnissen soll synmaxcol das regeln. Ich kann aber keine
funktionierende Syntax finden, die ich in meine vimrc stecken könnte.

set fdm=marker:synmaxcol=10000
set synmaxcol=10000

und anderes funktioniert nicht, was ich ergoogeln konnte.
--
Andreas

Janis Papanagnou

unread,
Nov 16, 2023, 8:44:49 PM11/16/23
to
On 17.11.2023 00:08, Andreas Kohlbach wrote:
> VIM erlaubt per Default das Einfärben von maximal 3000 Zeichen pro Zeile.
>
> Ich habe Dateien, die länger sind.
>
> [...]

Oha, mir war eine Grenze hier noch gar nicht bekannt. Das liegt
aber daran, dass ich mir die Dateien - wo sinnvoll und möglich -
einfach umformatiere, um die Daten auch handhabbarer zu machen.
Hast du diese Möglichkeit bei deinen Daten?

Für HTML (wo ich lange Zeilen am häufigsten antreffe) breche ich
z.B. regelmäßig an den HTML-Tags um; mittels :%s/></>^V^M</g
(wobei ^V für <Ctrl-V> und ^M für <Enter> steht).

Um welches Datenformat geht es in deinem Fall?

Janis

Janis Papanagnou

unread,
Nov 16, 2023, 10:03:20 PM11/16/23
to
On 17.11.2023 03:35, Andreas Kohlbach wrote:
> On Fri, 17 Nov 2023 02:44:45 +0100, Janis Papanagnou wrote:
>> On 17.11.2023 00:08, Andreas Kohlbach wrote:
>>> VIM erlaubt per Default das Einfärben von maximal 3000 Zeichen pro Zeile.
>>>
>>> Ich habe Dateien, die länger sind.
[...]
> Ich dachte halt, dass die 3000er Grenze vielleicht geschaffen wurde, als
> die Hardware noch unter 1 GB RAM und 1-Kern Prozessoren hatte. Heutige
> Hardware (meine ist 10 Jahre alt, sollte aber immer noch als "modern"
> gelten) sollte auch bei 10000 Zeichen keinen zu großen Schluckauf haben.

Selbst bei "alten" Systemen sind diese Größenordnungen nicht wirklich
ein Problem.

Meine Vermutung war gewesen, dass es vielleicht ein "buffering" Problem
ist; oft werden da statische Größen verwendet, die als sinnvoll und
ausreichend angesehen werden. Ist ja meistens auch so; das Coloring ist
ja ein Feature für die interaktive Orientierung in den Daten, und wenn
man Zeilenlängen in den 1000ern hat, dann ist nicht mehr viel los mit
der Orientierung. - Das wäre jedenfalls meine Vermutung und Erklärung
für solch ein Limit.

Ich habe mal kurz (und zum ersten Mal) in den Sourcecode reingeschaut.
Eine verdächtige Codesequenz mit einer Konstante im 3000er Bereich ist:

{"synmaxcol", "smc", P_NUM|P_VI_DEF|P_RBUF,
#ifdef FEAT_SYN_HL
(char_u *)&p_smc, PV_SMC, NULL, NULL,
{(char_u *)3000L, (char_u *)0L}
#else
(char_u *)NULL, PV_NONE, NULL, NULL,
{(char_u *)0L, (char_u *)0L}
#endif


Das ("synmaxcol") deckt sich mit deiner oben geäußerten Vermutung!

Von der Namensgebung her ist das wohl die Synhronisations-Kontextlänge
für die syntaktischen Prüfungen? (Ich spekuliere hier aber nur.) Wenn
das aber stimmt, dass dies die Ursache ist, und da es eine statische
hart-codierte Größe ist, wirst du das nur durch Neucompilieren des Vim
ändern können.

Janis

Janis Papanagnou

unread,
Nov 16, 2023, 10:19:13 PM11/16/23
to
On 17.11.2023 04:03, Janis Papanagnou wrote:
>
> Das ("synmaxcol") deckt sich mit deiner oben geäußerten Vermutung!
>

Sorry, ich habe oben dummgeschwätzt :-)

Der Code, den ich zitierte, der zeigt ja die einstellbaren Optionen!
Daher habe ich mal die Option geändert (hier mit der Kurzform 'smc')
:set smc=50000
und sofort war der gesamte Text korrekt gehilighted.

Ich verwende hier Vim version 7.3 - Hoffe, das klappt auch bei dir!

Janis

Janis Papanagnou

unread,
Nov 16, 2023, 10:45:50 PM11/16/23
to
On 17.11.2023 00:08, Andreas Kohlbach wrote:
Was bei mir mit Vim 7.3 funktioniert ist:
1. In einer Editier-Sitzung die Eingabe von :set smc=10000
2. In meinem $HOME/.vimrc File der Eintrag set smc=10000
3. In den Modelines der editierten Datei # vim: smc=10000

Janis

0 new messages