VIM에서 grep을 사용할 때 결과로 어떻게 이동합니까?


32

grep 플러그인을 VIM에 사용할 때 다음과 같이 파일 세트 내에서 문자열의 모든 발생을 현재 디렉토리에서 검색 할 수 있습니다.

:grep Ryan *.txt

이것은 다음과 같이 출력됩니다 :

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Enter 키를 누르면 편집자로 돌아갑니다. 내가 정말로하고 싶은 것은 그 파일 중 하나를 열고 문자열을 찾은 곳으로 이동할 수 있다는 것입니다. 이것을 할 수있는 방법이 있습니까? 이 1 of 3부분은 결과를 탭하는 방법이 있다고 생각하지만 어떤 명령을 사용할 수 있는지 모르겠습니다. 아무도 이것에 약간의 빛을 비출 수 있습니까?

답변:


34

Enter 키를 누르면 file1.txt의 3 행을보고 있어야합니다. 다음 경기로 넘어가려면 :cn; 이전 경기로 이동하려면을 실행하십시오 :cp. 실행 :copen하면 일치하는 목록이 포함 된 창이 열립니다. 커서를 원하는 일치 항목으로 이동하고 ENTER를 눌러 해당 일치 항목으로 이동하십시오.

사용에 대한 자세한 내용 :grep

:help grep
:help quickfix.txt

빠른 수정 사항 목록에서 입력 :cn하고 :cp앞뒤로 이동하는 것이 어색 할 수 있으므로 다음 맵핑을 사용합니다.

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

또한이 :grep명령은 플러그인이 아닙니다. 그것은 Vim의 일부입니다.


좋은 답변, 감사합니다! BTW, vim grep이있는 폴더를 통해 재귀 검색을 할 수 있습니까?
Marplesoft

유닉스 시스템에서 실행되는 한, 쉘에서 실행 된 명령에 :grep추가 할 인수를 Vim에 추가 할 수 있습니다 grep. 따라서을 사용하여 현재 디렉토리 안팎의 모든 .txt 파일을 재귀 적으로 검색 할 수 :grep -R --include=*.txt Ryan .있습니다. Vim의 :vimgrep명령을 사용하여 재귀 검색을 수행 할 수도 있지만 인수가 다르고보다 느리기 때문에 거의 사용하지 않습니다 :grep.
garyjohn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.