Vim에서 일치하지 않는 모든 줄 숨기기


87

vi 또는 Vim에서 일치하는 모든 줄을 표시하거나 숨길 수 있습니까? 강조 표시하지 않고 해당 라인 만 표시합니다.

예를 들어라는 단어가 포함 된 텍스트가 ERROR있습니다. 어떻게 그것을 포함하는 줄만 표시되도록 할 ERROR방법이없는 경우에만 라인을 표시하는 방법을 ERROR?

일치하는 모든 줄 을 삭제하지 않고 실행 취소 하지 않는 솔루션 이 있습니까?


답변:


109

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

:g/ERROR

반대의 경우 :

:g!/Error

또는 동등하게 :

:v/Error

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

@KanLi는 g<다시 보거나 @:실행하지 않은 경우 명령합니다.
D. Ben Knoble

53

사용 사례에 따른 또 다른 접근 방식은 vimgrep 및 그 결과를 quickfix 에서 사용하는 입니다. 다음을 수행 할 수 있습니다.

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

:copen그러면 별도의 빠른 수정 창에서 빠른 수정 목록이 열립니다. 따라서 마지막 vimgrep의 모든 행이있는 별도의 창이 생깁니다. 빠른 수정 창에서 Enter 키를 누르거나 행을 두 번 클릭하여 원본 파일의 해당 행으로 이동할 수 있습니다.

:colder이전 빠른 수정 목록 (이전 vimgrep 결과)으로 돌아갈 수 있습니다. 그리고 :cnewer최신 검색 결과로 이동합니다.

Quickfix 목록은 실행할 때도 업데이트됩니다 :make(이것이 오류 수정을 위해 quickfix라고 불리는 이유입니다). 이 때문에 "위치 목록"이라고하는 빠른 수정 목록에 대한 대안도 있습니다. 대신에 사용을 사용하려면 :lvimgrep, 다음 C-접두사 명령보다는 1- 접두사 명령을 사용 - :lopen, :lolder, :lnewer.

물론 할 수있는 일이 훨씬 더 많습니다. 자세한 :help quickfix내용은를 참조하십시오 .

추신, 당신은 라인을 삭제하고 취소하는 방법을 원하지 않는다고 말했습니다. 그러나 당신 g/ERROR이 대답으로 표시했기 때문에 나는 빠르고 더러운 방법을 지적 할 것이라고 생각했습니다 g!/ERROR/d. 그런 다음 다음을 사용하여 쉽게 취소 할 수 있습니다.u . 또한 참고 :set hlsearch:g명령 과 일치하는 패턴을 강조 표시 할 수 있습니다 .


1
허용 된 답변보다 ": g! / ERROR / d"에 대한 팁을 주셔서 감사합니다.
VinGarcia

패턴 과 일치 하지 않는 선으로 이것을 할 수 있습니까 ?
Jacktose


26

이를 수행하는 가장 좋은 방법은->

:vimgrep /something/g % | copen

그러면 키워드와 일치하는 목록이 열리고 빠른 수정 창에 일치하는 줄만 표시됩니다.

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


1
현재 파일을 고려하지 않는 경우 %를 파일 경로로 바꾸십시오.
Shivendra 2015-09-06

패턴 과 일치 하지 않는 선으로 이것을 할 수 있습니까 ?
Jacktose

2

사용하는 경우 다음을 사용할 fzf수 있습니다.

  • :Lines 열려있는 모든 파일
  • :BLines 오픈 버퍼에서만
  • :Rg [pattern] 사용 ripgrep

1

:vimgrep /something/g % | copen멋지게 작동합니다. 또한 :g/<pattern>/d패턴으로 삭제 라인에 사용할 수 있습니다


이것은이 질문에 대한 또 다른 대답입니다.
Shivendra 2010 년

1

이를 수행하는 몇 가지 hackish 더러운 방법 :

:w (save)
ggdG (deletes everything)
:.!grep something % (replace current line with grep output)

0

당신은 아마도 덜 vim & / pattern / 명령을 의미 할 것입니다. 이것은 / pattern / (grep과 같은)을 포함하는 줄을 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.