vim에서 : grep 및 : vimgrep을 언제 사용합니까?


17

vim :make에서는 오류를 쉽게 작성하고 수정할 수 있으며 다음 :grep:vimgrep같이 동작 :make합니다. 그런데 왜이 두 명령이 필요한가요? 패턴을 검색하고을 누르는 것이 n어떻습니까? 검색 만하는 것의 장점은 무엇입니까?

답변:


17

의사가 말했듯이 :

Vim has two ways to find matches for a pattern: Internal and external.

간단히 말해서, :vimgrepVim의 grep 메커니즘을 사용하여 파일을 읽고 찾습니다. :grep외부 명령을 사용하여 동일한 작업을 수행합니다.

/현재 버퍼 만, 반면에 대한 검색은 :[vim]grep한 번에 전체 프로젝트에서 검색 할 수 있도록 파일의 패턴을 통해 검색 할 수 있습니다.

:h grep자세한 내용을 살펴보십시오 .


4

/?단지 현재의 버퍼를 검색 만 :grep하고 :vimgrep인수로 임의의 파일 / 패턴 / globs의 가져 가라.


4

:[vim]grepover의 한 가지 이점은 /?결과가 빠른 수정 목록 (또는 사용하는 경우 위치 목록 :l[vim]grep)에 저장된다는 것입니다 . 이는를 사용하여 모든 일치 목록을 가져올 수 있음을 의미합니다 :cl. 그런 다음 숫자를 사용하여 목록에서 원하는 결과로 직접 이동할 수 있습니다.

또한 :[vim]grep pattern %전체 코드베이스 를 검색하는 것과 동일한 명령을 사용하여 현재 버퍼 를 검색 할 수 :[vim]grep pattern path있으므로 대칭이 좋습니다.

또한 Silver Surfer / Ripgrep 을 사용하여 강력한 검색 기능을 제공 할 수 있습니다. 이들은 :[vim]grep명령에 매핑 될 수 있습니다 .


0

내가 볼 3 가지 주요 장점이 있습니다

  1. 일관된 regex엔진 / 구문 사용 :를 사용 :grep/vimgrep하면 등을 grepprg정의 할 수있는을 정의 할 수 있습니다 grep/ack/ag.이를 사용하여 일관된 regex엔진을 사용하여 현재 버퍼 또는 여러 버퍼 / 파일을 검색 할 수 있습니다 . 반면에 vim/pattern 옵션 을 사용 하면 구문과 다른 구문을 가진 vim의 기본 정규식 엔진에 붙어 extended regular expression있습니다. 따라서 표현식을 검색해야 할 때마다 사용해야하는지 \)또는 )다른 점 과 다른 차이점 을 생각 / 기억해야합니다 . 이것은 매우 성 가실 수 있습니다 ( https : //.com/questions/3864467/whats-the-difference-between-vim-regex-and-normal-regex )

  2. vimgrep은 빠른 수정 / 위치 목록을 채 웁니다 .를 사용 :grep/vimgrep하면 검색 목록을 채울 수 있습니다. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).

    위치 목록을 사용하려는 ]q경우 Tim-Popes uninpaired 플러그인 ( https://github.com/tpope/vim-unimpaired ) 이있는 경우 바로 가기를 사용하여 탐색 할 수 있습니다.

  3. vim 내에있는 복잡한 검색 : 일반적으로 복잡한 검색을 수행해야하는 경우 명령 줄을 사용해야 할 수도 있습니다. 그러나 greprg올바르게 정의하고 [1]과 같은 명령을 사용하는 경우

    : vim / pattern1 / find . -type f

    매우 복잡한 검색을 수행 location list하거나 또는에 검색 결과를 표시 할 수 있습니다 quickfix list.

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

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