vim: grep usando a opção bash 'globstar'

3

Eu estou (lentamente) migrando para o Vim para codificação diária do Ruby on Rails (Linux Cinnamon 64bits). Sendo um novato, recentemente encontrei algo que não entendo.

Eu quero usar os comandos: vimgrep e: grep para pesquisar um padrão em uma árvore de arquivos do Vim. Eu posso fazer isso sem problemas com o comando: vimgrep:

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

No entanto, quando tento usar o mesmo comando com: grep (que deve usar o grep do sistema), nenhum resultado é retornado:

:grep User **/*.rb

Pesquisando, descobri que as opções globstar do meu shell bash não estavam habilitadas:

$shopt globstar
globstar        off

Foi fácil ativar:

$shopt -s globstar

Adicionei a linha acima ao meu arquivo .vimrc e verifiquei se a opção estava permanentemente ativada no meu bash.

Com a nova opção, eu poderia executar o grep dessa forma e obter os resultados desejados:

$grep User **/*.rb

Infelizmente, o comando: grep de dentro do Vim ainda não está funcionando com o '**'. E executando:

!shopt globstar

de dentro do Vim, o resultado ainda está desligado .

Portanto, a questão é: posso propagar a opção globstar do meu bash para o meu ambiente de comando externo do Vim? Caso contrário, posso de alguma forma definir minha opção grepprg no Vim de uma forma que me permita usar o globstar corretamente?

Agradecemos antecipadamente a todos que ajudarem

    
por nerfologist 09.12.2014 / 10:54

1 resposta

5

As opções de shell não herdam as shells bifurcadas, mas é isso que o Vim faz quando você usa o comando :! : ele lança um novo shell.

Você pode influenciar os shells bifurcados no Vim por meio da opção 'shell' :

:set shell+=\ -O\ globstar

ou

:set shell=/bin/bash\ -O\ globstar
    
por 09.12.2014 / 11:09

Tags