Vim: Como você usa o grep externo nas janelas para procurar aspas?

5

Por alguma razão, não posso, durante minha vida, descobrir como passar aspas simples para ferramentas externas ao usar o vim. Por exemplo, talvez eu queira chamar o grep externo do Vim para pesquisar o texto "foo" (ou seja, uma aspa simples e depois a palavra foo)

Então eu posso tentar o comando:

:grep \"foo *.txt

Mas isso resulta na seguinte mensagem de erro:

!findstr /n \"foo *.txt >C:\Users\[username]\AppData\Local\Temp\VIeC244.tmp 2>&1
shell returned 1
E40: Can't open errorfile C:\Users\[username]\AppData\Local\Temp\VIeC244.tmp

Observe que o grep é alterado para usar 'findstr / n', já que estou no Windows (e pode ser verificado executando echo &grepprg ). O que eu acho é que eu posso facilmente executar a pesquisa que eu quero, se eu fizer isso sozinho a partir da linha de comando, digitando o seguinte:

findstr /n \"foo *.txt

O que funciona exatamente como eu esperaria

    
por Steve Vermeulen 14.09.2013 / 03:48

1 resposta

1

Você pode tentar definir temporariamente (ou permanentemente) 'shellxquote' como um caractere de aspas simples, como :set shellxquote=\"

Observe que isso quebrará alguns comandos externos usando caracteres especiais como & amp ;, |, & lt ;, & gt ;, etc. (todas as coisas em shellxescape por padrão), então talvez você não precise deixá-lo com esse valor. Mas, parece que este é um lugar onde o valor shellxquote padrão do Vim 7.3.450 está quebrado.

    
por 14.09.2013 / 21:44