Vim: Поиск в открытых буферах

Одна из функций, которые мне нравятся в Visual Studio, - это возможность поиска только в открытых файлах. Например, если я недавно внес изменения в некоторые файлы и хотел бы отследить эти изменения, я мог бы искать определенное слово, но только в этих файлах, чтобы избежать получения большого списка необходимых соответствий.

Это возможно с Vim?! Что меня интересует, так это возможность открывать файлы, которые я изменил для использования:

gvim `git diff --name-only`

затем найдите в этих файлах то, что я хочу.

2 ответа

Хороший способ сделать это - использовать внутреннюю команду Vim grep (:vim):

:vim /pattern/ `git diff --name-only`
:copen

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

Если вы хотите, чтобы vim открывал все файлы в их собственных буферах для файлов, которые соответствуют вашему diff, вы можете попробовать это:

gvim $(grep -l pattern $(git diff --relative --name-only))

git diff --relative --name-only показывает измененные файлы в индексе, но с именами файлов относительно текущего рабочего каталога.

grep -l pattern <list of files> сообщит имена файлов, которые содержат совпадение на pattern, (Обратите внимание, что шаблон просто должен существовать в файлах, а не в git diff выход.)

POSIX $() вместо backticks делает возможным использование вложенных команд.

Другие вопросы по тегам