Vim: Search in Open Buffers
One features I like with Visual Studio is the ability to search in open files only. For example, if I recently did changes to some file开发者_如何学运维s and I would like to trace those changes, I might search for a certain word, but only in those files to avoid getting a large list of necessary matches.
Is this possible with Vim?! What I am interested in is being able to open the files I have changed so for using:
gvim `git diff --name-only`
then search those files for what I want.
A nice way to do that is to use vim's internal grep command (:vim
):
:vim /pattern/ `git diff --name-only`
:copen
This will open a small window (called quickfix
) with the search results and links to open the corresponding files (they don't have to be open).
If you want vim to open up all the files in their own buffers for files that match your diff, you could try this:
gvim $(grep -l pattern $(git diff --relative --name-only))
git diff --relative --name-only
shows the changed files in the index but with filenames relative to the current working directory.
grep -l pattern <list of files>
will report the filenames that contain a match on pattern
. (Note that the pattern just has to exist in the files, not in the git diff
output.)
POSIX $()
instead of backticks makes using nested commands possible.
精彩评论