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 делает возможным использование вложенных команд.