vim :bash 'globstar' 옵션을 사용하여 grep

vim :bash 'globstar' 옵션을 사용하여 grep

저는 매일 Ruby on Rails 코딩(Linux Cinnamon 64비트)을 위해 (천천히) Vim으로 전환하고 있습니다. 초보로서 최근에 이해가 되지 않는 내용을 접했습니다.

:vimgrep 및 :grep 명령을 사용하여 Vim의 파일 트리에서 패턴을 검색하고 싶습니다. :vimgrep 명령을 사용하면 문제 없이 이 작업을 수행할 수 있습니다.

:vimgrep /User/gj **/*.rb

그러나 :grep(시스템 grep을 사용해야 함)과 함께 동일한 명령을 사용하려고 하면 결과가 반환되지 않습니다.

:grep User **/*.rb

구글링을 좀 하다가 발견한글로벌 스타내 bash 쉘의 옵션이 활성화되어 있지 않습니다.

$shopt globstar
globstar        off

켜는 것은 쉽습니다:

$shopt -s globstar

위의 줄을 .vimrc 파일에 추가하고 bash에서 해당 옵션이 영구적으로 활성화되었는지 확인했습니다.

새로운 옵션을 사용하면 이런 방식으로 grep을 수행하여 원하는 결과를 얻을 수 있습니다.

$grep User **/*.rb

안타깝게도 Vim의 내부 :grep 명령은 여전히 ​​'**'에서는 작동하지 않습니다. 그리고 다음을 실행합니다:

!shopt globstar

Vim 내에서 결과는 여전히떠나다.

그래서 질문은: 내 bash를 전파할 수 있습니까?글로벌 스타내 Vim 외부 명령 환경에 대한 옵션은 무엇입니까? 그렇지 않으면 어떻게든 내 설정을 설정할 수 있습니다.grepgglobstar를 올바르게 사용할 수 있게 해주는 옵션이 Vim에 있나요?

도움을 주실 분께 미리 감사드립니다.

답변1

쉘 옵션은 분기된 쉘에 상속되지 않지만 :!Vim이 이 명령을 사용할 때 수행하는 작업은 새 쉘을 시작하는 것입니다.

다음 옵션을 통해 Vim의 분기된 쉘에 영향을 줄 수 있습니다 'shell':

:set shell+=\ -O\ globstar

또는

:set shell=/bin/bash\ -O\ globstar

관련 정보