vi 또는 Vim에서 일치하는 모든 줄을 표시하거나 숨길 수 있습니까? 강조 표시하지 않고 해당 라인 만 표시합니다.
예를 들어라는 단어가 포함 된 텍스트가 ERROR
있습니다. 어떻게 그것을 포함하는 줄만 표시되도록 할 ERROR
방법이없는 경우에만 라인을 표시하는 방법을 ERROR
?
일치하는 모든 줄 을 삭제하지 않고 실행 취소 하지 않는 솔루션 이 있습니까?
답변:
:global
명령 에 대해 알고 있습니까? 이것이 당신이 원하는 것을 수행합니까?
:g/ERROR
반대의 경우 :
:g!/Error
또는 동등하게 :
:v/Error
g<
다시 보거나 @:
실행하지 않은 경우 명령합니다.
사용 사례에 따른 또 다른 접근 방식은 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
패턴으로 삭제 라인에 사용할 수 있습니다