Ich habe festgestellt, dass die Fold-Methode von vim die Effizienz der automatischen Vervollständigung beeinflusst, z. B. C-N
langsam und C-X L
in mittelgroßen Dateien mit relativ teuren Dateien schrecklich langsam ist foldexpr
.
Ich kann den Wert nicht erkennen, wenn foldexpr beim Durchlaufen der automatischen Vervollständigung konsultiert wird. Daher möchte ich dies irgendwie deaktivieren, damit ich die verwendbare automatische Vervollständigung wieder bekomme.
Irgendwelche Vorschläge?
EDIT: Testfall
Ein Testfall: Keine Plugins; und nur dies, was die minimalste mögliche foldexpr-Funktion sein muss (und völlig nutzlos ist, außer zum Zählen von Aufrufen) in .vimrc
:
let g:c = 0
function! Myfoldexpr()
let g:c = 1 + g:c
return '0'
endfunction
Starten Sie vim nun mit einem leeren Dokument. Wir kopieren die ersten 100 Zeilen von Vims eigener Hilfedatei und führen dann die automatische Vervollständigungszeile aus, wählen den 10. Vorschlag aus und sehen dann, wie oft foldexpr aufgerufen wurde.
:help
y100j:q
P:set foldexpr=Myfoldexpr()
:set fdm=expr
O<C-X><C-L><C-L><C-L><C-L><C-L><C-L><C-L><C-L><C-L><C-L><Esc>
:echo g:c
2088
Das ist eine Datei mit 100 Zeilen, mit relativ kurzen Zeilen, und der foldexpr wurde 2088 Mal aufgerufen (obwohl 100 davon beim ersten Festlegen des foldexpr ausgeführt werden). Effizientes foldexpr ist natürlich gut, aber wir Programmierer fragen viele unserer foldexpr, daher sind sie notwendigerweise nicht trivial. Wenn ihre Ausführungszeit mit mehreren Tausend multipliziert wird, können Sie zwischen Autovervollständigung oder Einzug für die Produktivität wählen . Gierig / faul sein Ich würde gerne beides benutzen können! Abgesehen von dem Versuch, einige ziemlich gut etablierte foldexpr-basierte Falt-Plugins neu zu schreiben (ich habe versucht, php-folding neu zu schreiben und nach Tagen des Versuchs, es auf einen funktionsfähigen Zustand zu optimieren, habe ich foldexpr für php aufgegeben), gibt es vielleicht eine Möglichkeit, a zu verwenden Mapping fdm=manual
vor der automatischen Vervollständigung drehen oder so?
iHello<Esc>
, g:c
wird auch die Variable auf erhöht 20
, dann oWorld<Esc>
macht es das 38
... Die Anzahl der Auswertungen foldexpr
scheint also nichts mit der Verwendung der Vervollständigung zu tun zu haben ... Versuchen Sie, Vim mit einem minimalen vimrc zu laden Datei und sehen, ob das Problem immer noch auftritt, es könnte eine andere Einstellung oder ein Plugin sein.
p
). Ich denke, es tut es pro Zeichen des Einfügekandidaten.