LINUX.ORG.RU

Поиск файлов в vim очень мелденный

 


0

2

Мне бы хотелось не использовать внешних утилит и плагинов, но vimgrep и :e glob :f glob очень медленные. У меня довольно большой проект, приходится ждать по несколько минут пока он найдет нужный файл, хотя ripgrep и fzf.vim находят за пару секунд. Может есть какое-нибудь нативное решение?



Последнее исправление: mishka06 (всего исправлений: 2)

Может есть какое-нибудь нативное решение?

Попробуй так, если вим не слишком старый

https://www.reddit.com/r/vim/comments/1mvzitt/yet_another_simple_fuzzy_file_finder/

Ну и комментом там более быстрый вариант с find/fd/rg.

PS, оригинал https://github.com/habamax/.vim/blob/master/plugin/find.vim

habamax ★★★
()
Последнее исправление: habamax (всего исправлений: 2)

если не хочется внешние зависимости, то только велосипедить собственные команды в vimrc.

Если используешь git, то советую git ls-files | grep ... - это должно очень быстро работать, т.к. в хранилище объектов git уже есть список файлов, надо его просто оттуда достать.

Lrrr ★★★★★
()
Ответ на: комментарий от mishka06

В этом смысл vim. В интеграции с внешними тулзами. Это нативное для vim решение. Если ripgrep быстро ищет - его и надо использовать.

if executable('rg')
    set grepprg=rg\ --vimgrep\ --no-heading\ --smart-case
    set grepformat=%f:%l:%c:%m,%f:%l:%m
endif

Или через плагин, если хочется отдельные команды для поиска через rg.

Belkrr ★★
()
Ответ на: комментарий от mishka06

Это спецолимпиада такая?

У меня как-то был коллега, который хвалился, что он просто несравнимый знаток юникс-вея и вима. Я периодически проходил мимо его рабочего места, и видел, что он использует только несколько однобуквенных команд, типа hjkl, i, o, a. Попробовал подсказать ему, что существует ещё целый класс удобных команд, он отказался под предлогом: «я хочу использовать только минимальный набор команд, который работает везде». Несмотря на то, что даже в самом старом vim, который можно найти в каком-нибудь древнем CentOS, уже поддерживается гораздо больше команд, чем даже я знаю.

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

прочитал манул от начала до конца, как-то подходящего решения придумать не могу

mishka06
() автор топика
Ответ на: комментарий от Chiffchaff

у меня нет цели использовать базовый функционал, цель не использовать плагины кроме как встроеных пакетов в виме по типу comment и внешние утилиты

mishka06
() автор топика
Ответ на: комментарий от mishka06

Ну а цель-то в чём? Я, когда приходится, например, работать на древней Cent OS, тащу за собой ripgrep, fzf и плагины. Я не понимаю, зачем мне приспосабливаться к окружению 15-летней давности, в чём цель?

В мире пишутся новые программы, придумываются новые подходы, потому что очень маловероятно, что однажды придуманное 30-40 лет назад, будет актуально и удобно сегодня. Несмотря, что на ЛОР полно таких консерваторов. Если бы они перфокарты и перфоленты застали, то и сегодня бы ратовали за то, что «писать код на клавиатуре с монитором - моветон - настоящий путь это только пробивать на перфокартах».

Если же это полностью закрытое окружение, куда совершенно однозначно нельзя ничего доустановить, то увы, сочувствую. Но стоит тогда дополнить вопрос этой информацией.

Chiffchaff
()
Ответ на: комментарий от mishka06

Без дополнительных зависимостей использовать vim для крупных проектов плохая затея.

mister_me ★★
()
Ответ на: комментарий от anonymous

Ты по ссх что ли работаешь?

всё ещё не повод не подтягивать собственные конфиги с плугинами

mega_venik ★★★★
()
Ответ на: комментарий от annulen

git ls-files быстрее чем find, потому что он не шарится по папкам, а получает список файлов там, где он уже есть, т.е. в индексе.

Lrrr ★★★★★
()
Ответ на: комментарий от mishka06

Содержимое файла загружается в момент его отображения и вес текстовых файлов наверняка меньше

anonymous
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария