Vim: Поиск в открытых буферах - PullRequest
6 голосов
/ 27 февраля 2011

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

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

gvim `git diff --name-only`

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

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

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

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

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

1 голос
/ 27 февраля 2011

Если вы хотите, чтобы 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 $() вместо обратных кавычек делает возможным использование вложенных команд.

...