Есть ли способ рекурсивного поиска файла в каталоге (используя при необходимости подстановочные знаки) в Vim? Если не изначально, есть ли плагин, который может с этим справиться?
Подстановочные знаки можно использовать с командой : edit
. Итак,
:e **/test/Suite.java
откроет test / Suite.java независимо от того, где он находится в текущей иерархии каталогов. Это работает с завершением табуляции, поэтому вы можете использовать [tab] для раскрытия подстановочных знаков перед открытием файла. См. Также параметр wildmode , чтобы вместо этого просмотреть все возможные расширения.
Другой трюк - использовать
:r! find . -type f
для загрузки списка всех файлов в текущем каталоге в буфер. Затем вы можете использовать все обычные инструменты редактирования текста vim для навигации / сортировки / обрезки списка и CTRL + W gf
, чтобы открыть файл под курсором в новой панели.
Есть команда поиска. Если вы добавите **
к своему пути, вы сможете выполнять поиск рекурсивно.
:set path
покажет вам ваш текущий путь, добавьте **, выполнив что-то вроде
:set path=.,/usr/include,,**
бит перед **
, который я скопировал из исходного : установить путь
, тогда вы можете просто введите
:find myfile.txt
, и он открывается волшебным образом!
Если вы добавите команду set в свой .vimrc, это обеспечит вам возможность выполнять рекурсивный поиск в будущем. Кажется, он не выполняет поиск в каталогах с точками (например, .ssh)
Можно использовать! для запуска команд оболочки:
:! find . -name *.xml
Вы можете просматривать файловую систему с помощью : например.
, но я не умею выполнять рекурсивный поиск (я новичок в Vim - пользуюсь им всего десять лет).
Есть несколько популярных плагинов для файловых браузеров:
См. Также эту ветку на SuperUser .
vim имеет билд в командах grep, lgrep, vimgrep или lvimgrep, которые могут это делать
вот руководство по их использованию http://vim.wikia.com/wiki/Find_in_files_within_Vim#Recursive_Search
вы также можете использовать внешнюю команду, например find или grep, из vim, выполнив ее следующим образом
:!find ...
vim как встроенную команду поиска (:help find), но открывает только первый найденный файл. Однако вы можете использовать этот замечательный плагин: FuzzyFinder, который делает все, что вы хотите, и даже больше