LINUX.ORG.RU

Подскажите как нужно искать в vim в каталоге и рекурсивно.

 


0

2

Вздумалось мне тут освоить vim, и вроде все пока нормально. Только не хватаем мне глобального поиска. Или мозгов, но с этим вы помочь не сможете.

Как в QtQreator: нажимаю Ctrl+Shift+F - на слове, или просто потом впечатываю строку поиска. И он мне выдает все упоминания этого в проекте, где я могу каждое прощелкать и посмотреть детальней:

https://drive.google.com/file/d/1ehG3uvv9zODiaJD_9DMUoo2ApI4Ne7Kn/view?usp=sh...

https://drive.google.com/file/d/1DRJjhm3LfFdDKS09WRYkJVQy27hYidDw/view?usp=sh...

Вот что-нибудь, что бы, скажем от CWD или от предустановленного в переменную каталога выполнять поиск.

Я поискал в инете, инет мне сказал, нужно использовать grep. Я написал :grep struct. И оно мне ничего не выдало. Как я понимаю grep это от pipe работает из командной строки, скажем от cat. Так что даже если он и выдаст, то только от текущего буфера. А мне то нужно рекурсивно от каталога.

Ему надо имена файлов указывать:

:grep struct **

Но вроде хватает плагинов с несколько более удобным интерфейсом.

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

:grep struct **

1. Рекурсивно все равно не ищет.
2. Показывает список всех, но после открывает первую. Т.е. нет возможности их перебрать и посмотреть.

victor79
() автор топика

https://github.com/junegunn/fzf.vim
Вот это когда-то настроил и щас кайфую

" fzf
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'

" fzf
nmap <Leader>p :Files <cr>

Оно и в шеле работает если что

EDIT: ой ой ой, недочитал. это поиск файлов по каталогам…

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

Ну и раз уж моего мнения не спрашивали, то я скажу, что вим - это не иде для с++, чтобы это понять достаточно запустить дебагер с помощью интеграци в вим. это почти ничем не отличается от туи для гдб. с остальным можно жить, но это просто каменный век. так я ушел в емакс, там есть качественная интеграция с гдб и евил мод(емуляция вима в емакс) + есть годные собрки, готовые к использованию при небольших допилах: doom emacs, например.

Удачи!

Keltir
()

Смежное на тему поиска - стоит прописать в конфиг set matchpairs+=<:> для прыжков по парным угловым скобкам. Для крестов необходимо + чтение выхлопа компилятора (читаю его в виме же, раньше сильно мучался до matchpairs…, когда десятиэтажный шаблон в шаблоне).

Ещё моя недавняя находка - шрифт input, у него правильный вид фигурных скобок, который не похож на круглые. Раньше юзал terminus, в принципе норм, но это мешало.

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

Так через :grep можно напрямую передать опции во внешний grep, например :grep -R void *

kvpfs ★★
()

все правильно, в терминале это делается с помощью grep, ripgrep, silver searcher и т.п. Либо настрой grepprg (:help grepprg), либо поищи по ключевым словам плагины с поддержкой этих утилит и выбери подходящий. Лично я пользуюсь telescope для neovim, написан на lua и там есть вообще все.

Lrrr ★★★★★
()

Присоединяюсь к ранее высказавшимся ораторам.

Но я бы ещё рекомендовал посмотреть всё таки на ctags. Если уж с vim решили поработать. Это утилита, собирающая информацию об именах и позициях переменных, функций и процедур, встречающихся в исходном коде. Поддерживает порядка 40 языков. Генерируется файл tags, с ним навигация по коду становится легче. Там и плагины для более удобного использования есть, если нужны будут.

Moisha_Liberman ★★
()

Можно использовать cscope+gutentags

Наводите курсор на искомое слово, нажимаете ctrl+space s и получаете длинный список файлов со строками, где это слово встречается, выбираете нужный вам вариант и открывается в новой вкладке выбранный файл на выбранной строке

IvanR ★★★
()
Последнее исправление: IvanR (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.