Neovim работает крайне медленно только с одним конкретным файлом.

Вопрос или проблема

У меня есть конфигурационный файл в настройках neovim, который работает крайне медленно. Задержка в каждую нажатие клавиши составляет около 4 секунд. Это файл lua. Я пробовал отключить LSP, отключить TreeSitter и отключить плагин автозавершения. Ничто из этого не дало результата. У меня нет проблем с другими найденными lua файлами. Neovim не выдает никаких ошибок.

Мой вопрос: как лучше всего подойти к отладке этой проблемы?

Источник: https://www.reddit.com/r/neovim/comments/ht6mk4/comment/fyh4py0/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

Я только что столкнулся с подобной проблемой в .ts файле и следовал этим шагам:

  1. Открыть конкретный файл

  2. Выполнить следующие команды:

    :profile start profile.log
    :profile func *
    :profile file *
    
  3. Сделать что-то, что вызывает замедление (для меня это было вызов форматирования; в вашем случае просто перемещайтесь по файлу)

  4. Остановить профилирование с помощью :profile pause

  5. Проверить profiler.log на наличие причин замедления. В моем случае это был foldexpr treesitter, который вызывался тысячами раз и зависал всё; отключил его и всё вернулось к обычному быстродействию.


Другой способ отладки — запустить neovim без какой-либо конфигурации/плагинов, а затем включать всё по одному, чтобы найти виновника. Утомительно, но всегда срабатывает.

Надеюсь, это поможет, удачи!

Ответ или решение

Конечно, я помогу вам решить проблему с медленной работой Neovim при редактировании конкретного файла. Следуйте этим шагам, чтобы отладить проблему и обнаружить источник замедления:

  1. Создание профиля работы:
    Откройте проблемный файл в Neovim и выполните следующие команды для создания профиля, чтобы записать информацию о времени выполнения функций:

    :profile start profile.log
    :profile func *
    :profile file *

    Эти команды начнут запись профиля, отслеживая производительность функций и файлов, что поможет выявить узкие места.

  2. Воспроизведение проблемы:
    Выполняйте действия, которые вызывают замедление. Например, поперемещайтесь по файлу, используйте команды редактирования, чтобы увидеть, вызывает ли это задержку. Это необходимо для того, чтобы профилировщик мог записать данные о производительности в момент, когда проблема проявляется.

  3. Приостановка профилировщика:
    Когда вы заметите замедление, приостановите профилировщик с помощью команды:

    :profile pause

    Это позволит сохранить полученные данные для анализа.

  4. Анализ результатов:
    Откройте файл profile.log, чтобы узнать, какие функции или файлы занимают больше всего времени. Ищите функции, которые вызываются несколько раз и могут вызывать задержку. Например, это могут быть функции, связанные с TreeSitter или автозавершением.

  5. Проверка на наличие проблем:
    Если вы заметили, что определённая функция (например, функция форматирования или связанная с TreeSitter) занимает много времени, попробуйте отключить или оптимизировать её. Возможно, вам будет нужно выполнить поиск по документации или сообществу, чтобы узнать о возможных решениях.

  6. Запуск без конфигурации:
    Если профилирование не дало четких результатов, попробуйте запустить Neovim без конфигураций и плагинов. Это можно сделать с помощью команды:

    nvim --noplugin <путь_к_файлу>

    Затем поочередно активируйте ваши плагины и настройки, чтобы определить, какой из них вызывает проблему.

  7. Дополнительные шаги:
    Если ни один из вышеперечисленных методов не помог, рассмотрите возможность:

    • Обновления Neovim и всех плагинов до последних версий.
    • Проверки самого файла на наличие синтаксических или логических ошибок, которые могут вызывать задержку.
    • Протестируйте файл в другом текстовом редакторе, чтобы убедиться, что проблема не связана с самим файлом.

Если у вас возникнут дополнительные вопросы или вам потребуется дальнейшая помощь, не стесняйтесь обращаться. Надеюсь, эти шаги помогут вам разрешить проблему с производительностью Neovim. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...