Найти файл (с помощью рекурсивного поиска по каталогам) в Vim

Есть ли способ рекурсивного поиска файла в каталоге (используя при необходимости подстановочные знаки) в Vim? Если не изначально, есть ли плагин, который может с этим справиться?

75
задан Kara 8 April 2014 в 21:05
поделиться

6 ответов

Подстановочные знаки можно использовать с командой : edit . Итак,

:e **/test/Suite.java

откроет test / Suite.java независимо от того, где он находится в текущей иерархии каталогов. Это работает с завершением табуляции, поэтому вы можете использовать [tab] для раскрытия подстановочных знаков перед открытием файла. См. Также параметр wildmode , чтобы вместо этого просмотреть все возможные расширения.

Другой трюк - использовать

:r! find . -type f

для загрузки списка всех файлов в текущем каталоге в буфер. Затем вы можете использовать все обычные инструменты редактирования текста vim для навигации / сортировки / обрезки списка и CTRL + W gf , чтобы открыть файл под курсором в новой панели.

94
ответ дан 24 November 2019 в 11:33
поделиться

Есть команда поиска. Если вы добавите ** к своему пути, вы сможете выполнять поиск рекурсивно.

:set path

покажет вам ваш текущий путь, добавьте **, выполнив что-то вроде

:set path=.,/usr/include,,**

бит перед ** , который я скопировал из исходного : установить путь

, тогда вы можете просто введите

:find myfile.txt

, и он открывается волшебным образом!

Если вы добавите команду set в свой .vimrc, это обеспечит вам возможность выполнять рекурсивный поиск в будущем. Кажется, он не выполняет поиск в каталогах с точками (например, .ssh)

43
ответ дан 24 November 2019 в 11:33
поделиться

Можно использовать! для запуска команд оболочки:

:! find . -name *.xml
2
ответ дан 24 November 2019 в 11:33
поделиться

Вы можете просматривать файловую систему с помощью : например. , но я не умею выполнять рекурсивный поиск (я новичок в Vim - пользуюсь им всего десять лет).

Есть несколько популярных плагинов для файловых браузеров:

См. Также эту ветку на SuperUser .

2
ответ дан 24 November 2019 в 11:33
поделиться

vim имеет билд в командах grep, lgrep, vimgrep или lvimgrep, которые могут это делать

вот руководство по их использованию http://vim.wikia.com/wiki/Find_in_files_within_Vim#Recursive_Search

вы также можете использовать внешнюю команду, например find или grep, из vim, выполнив ее следующим образом

:!find ...
1
ответ дан 24 November 2019 в 11:33
поделиться

vim как встроенную команду поиска (:help find), но открывает только первый найденный файл. Однако вы можете использовать этот замечательный плагин: FuzzyFinder, который делает все, что вы хотите, и даже больше

6
ответ дан 24 November 2019 в 11:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: