2011-02-27 5 views
6

한 기능에서 검색 만 열려있는 파일에서 검색 할 수있는 기능입니다. 나는 최근에 어떤 파일을 변경했고, 나는 변경 사항을 추적하려는 경우 예를 들어, 나는 특정 단어를 검색 할 수 있지만 파일 만 필요 일치의 큰 목록을 입지 않도록.빔 : 나는 비주얼 스튜디오와 같은 오픈 버퍼

는 빔으로이 가능! 내가 관심을 가지는 부분은 사용을 위해 변경 한 파일을 열 수있는 것입니다 :

gvim `git diff --name-only` 

그런 다음 원하는 파일을 검색하십시오. (

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

이것은 해당 파일을 열려면 검색 결과와 링크 (라고 quickfix) 작은 창을 엽니 다 :

+0

그렇게하는 방법에는 여러 가지가 있습니다. 기대하는 출력/결과에 대해 좀 더 구체적으로 표현할 수 있습니까? – Eelvex

+0

나는 그 메시지가 분명하다고 생각했다. 5 개의 열린 파일이 있다고 가정 해보십시오. vimgrep/grep을 사용하여 5 개의 파일을 검색하려면 이름별로 나열해야합니다. vimgrep/grep에서 열린 파일 (즉 버퍼) 만 검색하도록합니다. – Rafid

+0

당신은'수 : 정력/패턴/\ '자식은 diff --name 전용 \''또는': bufdo : % S/...'나 ... – Eelvex

답변

2

그렇게 할 수있는 좋은 방법은 정력의 내부 grep 명령 (:vim)를 사용하는 것입니다 그들은 열 필요가 없습니다).

+0

는 명령을 실행합니다''몰랐 – Lusk116

1

당신은 당신의 사랑하는과 일치하는 파일에 대한 자신의 버퍼에있는 모든 파일을 열 수 정력이, 당신이 시도 할 수 원하는 경우 :

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

git diff --relative --name-only 인덱스에 있지만 파일 이름 상대적인로 변경된 파일을 보여줍니다 현재 작업 디렉토리.

grep -l pattern <list of files>은 일치 항목이 포함 된 파일 이름을 pattern에보고합니다. (패턴 단지 파일에 존재하는 것을 git diff 출력 하지 참고.) 대신 역 따옴표

POSIX $() 가능한 중첩 된 명령을 사용한다.

+0

중첩 된 명령은 또한 역 따옴표 가능하다' 에코 \ 에코 ABC \ 은'(실제 역 따옴표로 대체 ) 에코. – ZyX

+0

@ ZyX, 하, 전에 둥지를 짓기 위해 백틱을 벗어나려고 생각한 적 없다. :) 매일 새로운 무언가. – sarnold

관련 문제