developer tip

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

copycodes 2020. 9. 23. 07:46
반응형

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


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

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

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


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

:g/ERROR

반대의 경우 :

:g!/Error

또는 동등하게 :

:v/Error

사용 사례에 따른 또 다른 접근 방식은 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명령 과 일치하는 패턴을 강조 표시 할 수 있습니다 .


당신이 사용할 수있는

:g/ERROR/

ERROR가있는 모든 행을 인쇄하려면

또한 내가 여러 번 보았지만 사용하지 않은 Vim 플러그인이 있습니다. foldsearch : 주어진 패턴과 일치하지 않는 줄을 접습니다.


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

:vimgrep /something/g % | copen

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


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


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


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

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

참고 URL : https://stackoverflow.com/questions/862966/hide-all-notmatching-lines-in-vim

반응형