По какой-то причине, когда я вставляю новую строку в vim (либо с помощью клавиши o, либо с помощью ввода), vim требуется довольно много времени, чтобы фактически вставить новую строку.
Эта проблема усугубляется, когда я нажимаю и удерживаю клавишу ввода - в этом случае vim полностью зависает и занимает около 3-4 секунд для рендеринга всех новых строк.
Эта проблема, по-видимому, специфична для файлов Python, поскольку я протестировал это поведение с другими большими файлами, не относящимися к Python, и не вижу этой проблемы.
Некоторое замедление вызвано языковым пакетом vim-polyglot, но отключение этого плагина только немного помогло замедлению, но не полностью устранило его.
Открытие файла с помощью vim -u NORC
также не очень помогло, и единственный способ, которым я смог наконец получить плавную вставку новых строк, - это vim -u NONE
или syntax off
, что заставило меня поверить, что это подсветка синтаксиса. проблема.
Вот отчет о времени, в течение которого вы удерживаете клавишу ввода в течение нескольких секунд (при -u NORC
:
TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN
0.467286 11548 0 0.000109 0.000040 pythonMatrixMultiply ^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*
0.404281 12396 968 0.000109 0.000033 pythonNumber \%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>
0.376318 11548 0 0.000085 0.000033 pythonString [uU]\=\z('''\|"""\)
0.340580 11548 0 0.000222 0.000029 pythonMatrixMultiply \%(\w\|[])]\)\s*@
0.263625 14333 5095 0.000063 0.000018 pythonString [uU]\=\z(['"]\)
0.250727 11548 0 0.000058 0.000022 pythonRawString [uU]\=[rR]\z('''\|"""\)
0.241550 11548 0 0.000061 0.000021 pythonRawString [uU]\=[rR]\z(['"]\)
0.229741 21954 13645 0.000047 0.000010 pythonNumber \<\%([1-9]\d*\|0\)[Ll]\=\>
0.228875 11548 0 0.000392 0.000020 pythonNumber \<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=
0.202706 11548 0 0.000050 0.000018 pythonMatrixMultiply [^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@
0.175705 11548 0 0.000040 0.000015 pythonNumber \<\d\+[eE][+-]\=\d\+[jJ]\=\>
0.171692 11548 0 0.000047 0.000015 pythonNumber \<\d\+[jJ]\>
0.059275 24104 16355 0.000032 0.000002 pythonAttribute \.\h\w*
0.047092 11660 2977 0.000035 0.000004 pythonComment #.*$
0.021249 4826 4826 0.000020 0.000004 pythonString \z1
0.008962 11548 0 0.000015 0.000001 pythonNumber \<0[xX]\x\+[Ll]\=\>
0.008958 11548 0 0.000015 0.000001 pythonNumber \<0[oO]\=\o\+[Ll]\=\>
0.008755 11548 0 0.000004 0.000001 pythonNumber \<0[bB][01]\+[Ll]\=\>
0.004358 11548 952 0.000016 0.000000 pythonEscape \\$
0.003670 11484 0 0.000017 0.000000 pythonDecoratorName @\s*\h\%(\w\|\.\)*
0.001265 4760 0 0.000001 0.000000 pythonEscape \\N{\a\+\%(\s\a\+\)*}
0.001153 4826 0 0.000001 0.000000 pythonString \\\\\|\\\z1
0.001129 4760 0 0.000001 0.000000 pythonEscape \%(\\u\x\{4}\|\\U\x\{8}\)
0.001116 4760 0 0.000001 0.000000 pythonEscape \\[abfnrtv'"\\]
0.001098 4760 0 0.000001 0.000000 pythonEscape \\\o\{1,3}
0.001072 4760 0 0.000001 0.000000 pythonEscape \\x\x\{2}
0.000749 3104 0 0.000001 0.000000 pythonDecorator @
0.000700 3119 0 0.000001 0.000000 pythonDoctestValue ^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\+
0.000601 3119 0 0.000010 0.000000 pythonDoctest ^\s*>>>\s
0.000068 62 0 0.000007 0.000001 pythonSync ^\%(def\|class\)\s\+\h\w*\s*[(:]
3.524359 288911
Я не совсем уверен, почему сопоставляется так много регулярных выражений, поскольку единственное, что я делаю, это вставляю новые строки. Кроме того, большинство из этих регулярных выражений, таких как pythonMatrixMultiply, даже не совпадают ни с чем.
Любая помощь будет оценена.
Для справки, вот мои версии vim и neovim (в основном я использую neovim, но эта проблема также возникает в vim).
NVIM v0.3.1
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 07 2019 11:40:34)