2009-05-14 3 views
66

vi 또는 Vim에서 일치하는 모든 행을 표시하거나 숨길 수 있습니까? 강조 표시하지 않고 해당 행만 표시하십시오.Vim에서 일치하는 모든 행 숨기기

예를 들어 단어가 ERROR 인 텍스트가 있습니다. ERROR이 포함 된 줄만 표시하고 어떻게 줄을 표시하는 방법은 ERROR이 아닌지 만 표시하려면 어떻게합니까?

을 삭제하지 않고 개의 일치하는 줄을 삭제하지 않고 그냥 실행 취소 하시겠습니까?

+0

http://vi.stackexchange.com/q/2280/12111 – graceman9

답변

76

당신을 수행가 :global 명령에 대해 알고 있습니까? 이게 당신이 원하는대로합니까?

:g/ERROR 

과 반대에 대한

:

:g!/Error 

또는 동등 :

:v/Error 
+14

이것은별로 좋지 않습니다. 맨 아래로 스크롤하면 명령이 완료되고 모든 것이 다시 표시됩니다. 그 내용을 숨기고있는 것은 아닙니다. –

34

당신은

:g/ERROR/ 

가 오류로 모든 라인을 인쇄하는 데 사용할 수있는

또한 내가 여러 번 보았지만 사용하지 않은 빔 플러그인이 : foldsearch : fold away lines that don't match a given pattern

+12

foldsearch 플러그인에 대한 링크는 +1입니다. 눈에 거슬리지 않고 편리하게 사용할 수 있습니다. – user55400

+0

+1 접이식 플러그인 용입니다. 생명의 은인! –

42

사용 사례에 따라 다른 접근하는 vimgrepquickfix에서의 결과를 사용하는 것입니다. 다음을 수행 할 수 있습니다.

:vimgrep pattern % 현재 파일을 검색하고 첫 번째 검색 결과로 이동합니다. 더 중요한 것은 결과를 "퀵 픽스 목록"에 넣는 것입니다.

:copen 그러면 quickfix-list가 별도의 quickfix-window에서 열립니다. 따라서 마지막 vimgrep의 모든 행을 별도의 창에 표시합니다. quickfix-window에서 Enter를 누르거나 선을 두 번 클릭하여 원본 파일의 해당 줄로 이동할 수 있습니다.

:colder을 사용하면 이전 quickfix 목록 (이전 vimgrep 결과)으로 돌아갈 수 있습니다. :cnewer은 최신 검색 결과로 이동합니다.

:make을 실행하면 quickfix 목록도 업데이트된다는 점에 유의하십시오 (오류 수정을 위해 quickfix가 호출되는 이유). 이 때문에 "위치 목록"이라는 퀵 픽스 목록을 대체 할 수도 있습니다. 대신 :lvimgrep을 사용하려면 c 접두사가 붙은 명령 대신 l- 접두어가 붙은 명령 (:lopen, :lolder, :lnewer)을 사용하십시오.

물론 많은 작업을 수행 할 수 있습니다. 자세한 내용은 :help quickfix을 참조하십시오.

추신 : 행을 삭제 한 다음 실행을 취소하는 방식을 원하지 않는다고하셨습니다. 하지만 대답을 g/ERROR으로 표시 한 이후로 나는 빨리 그리고 더러운 방법을 지적 할 것이라고 생각했습니다. g!/ERROR/d. 그런 다음 u을 사용하여 쉽게 되돌릴 수 있습니다. 참고로 을 사용하면 :g 명령과 일치하는 패턴을 강조 표시 할 수 있습니다.

+0

": g!/ERROR/d"에 대한 팁을 수락 한 답변보다 잘 주셔서 감사합니다. – VinGarcia

0

vim &/pattern/ 에있는 명령은/pattern/(grep과 같이)이 포함 된 행을 표시합니다.

12

이 작업을 수행하는 가장 좋은 방법은 - 이것도>

:vimgrep /something/g % | copen 

이 키워드에 대한 일치의 목록이 열립니다 또한 단지 quickfix 창에서 일치하는 라인을 표시합니다.

+0

현재 파일을 고려하지 않을 경우 %를 파일 경로로 바꿉니다. – Shivendra

+0

매우 유용합니다 !!!! 고맙습니다!!! – ihightower

관련 문제