Подтвердить что ты не робот

Как я могу искать слово в целом в проекте/папке рекурсивно?

Предположим, что я ищу класс JFactory внутри папки и ее подкаталогов.

Как я могу записать файл, содержащий class JFactory?

Я не хочу заменять это слово, но мне нужно найти этот файл, содержащий class JFactory.

4b9b3361

Ответ 1

:vimgrep /JFactory/ **/*.java

Вы можете заменить шаблон /JFactory/ на /\<JFactory\>/, если вы хотите совпадение полного слова. :vim является сокращением для :vimgrep.

Если JFactory или \<JFactory\> - ваш текущий шаблон поиска (например, вы нажали * в одном случае), вы можете использовать пустой шаблон поиска: :vimgrep // **/*.java, вместо этого он будет использовать последний шаблон поиска. Handy!

Предупреждение: :vimgrep будет запускать autocmds, если включено. Это может замедлить поиск. Если вы не хотите, чтобы это можно было сделать:

:noautocmd vimgrep /\<JFactory\>/ **/*.java

который будет быстрее. Но: он не будет вызывать подсветку синтаксиса или открывать файлы gz ungzipped и т.д.

Обратите внимание: если вы хотите, чтобы внешняя программа grep вашего шаблона, вы можете сделать что-то вроде следующего:

:set grepprg=ack
:grep --java JFactory

Ack является Perl-написанной альтернативой grep. Обратите внимание, что тогда вам придется переключиться на регулярные выражения Perl.

Как только команда по вашему выбору вернется, вы можете просмотреть результаты поиска с помощью тех команд, которые описаны в документации Vim в :help quickfix. Поиск :cfirst, :cnext, :cprevious, :cnfile и т.д.

Обновление

2014: теперь есть новые способы сделать это с помощью the_silver_searcher или the_platinum_searcher и плагинов ag.vim или unite.vim.

Ответ 2

В корневой папке проекта выполните следующие действия:

grep -H -r 'what_you_search' * | less

Вы получите список папок и соответствующих строк с этой строкой.

Ответ 3

Серебряный искатель (https://github.com/ggreer/the_silver_searcher) очень рекомендуется, очень быстро!

установить

sudo pacman -S the_silver_searcher  // arch linux 
sudo apt install silversearcher-ag  // ubuntu

Использование

$ ag keywords

интегрировать с vim

rking/ag.vim(https://github.com/rking/ag.vim)

после установки

:Ag keywords

Ответ 4

Посмотрите ctags и cscope которые позволяют вам перейти к определениям классов и функций и найти, где эти функции/классы используются.

Ответ 5

Этот script может помочь: Filesearch.

Ответ 6

Откройте окно командной строки:

Esc - чтобы убедиться, что вы находитесь в обычном режиме

введите q, введите:

должна открыться командная строка (это как файл tmp для записи команды, которую вы можете перемещать, так как вы обычно перемещаетесь в любом файле vim...

введите i, чтобы войти в режим вставки

в этом примере будет искать строку to_srch, рекурсивно отображающую текущий каталог для всех типов файлов типа .js 'и'.java ', но опускать все пути к файлам, содержащие строку node_modules

:g/console.log/ | :vimgrep /console.log/ `find . -type f -name '*.js' -o -name '*.java' -not -path '*node_modules/*'`

Теперь вы нажимаете: вы можете перемещаться с помощью клавиш со стрелками через результаты sarch...

вы также можете установить их в .vimrc

    " how-to search recursively under the current dir for the files of type js and java but omit the
    " node_modules file paths
    ":g/console.log/ | :vimgrep /console.log/ `find . -type f -name '*.js' -o -name '*.java' -not -path '*node_modules/*'`
    " reminder open the quick fix window by :copen 20
    " reminder close the quick fix window by :ccl

вы можете опустить первый: q/to_srch/я использую его для автоматического выделения результатов поиска, так как у меня есть "set hlsearch" в моем ~/.vimrc

Любые подсказки, позволяющие автоматически включить srch-результаты из vimgrep или vimrc, будут высоко оценены...