vim submatch - tentando colocar aspas em torno de uma string

1

Estou tentando usar o comando vim submatch para colocar aspas em todas as strings de caracteres em uma linha de texto, e isso não funciona. Aqui está o que estou fazendo

:s:\a*\a:\(submatch(0)\):g

Tudo o que ele faz é substituir todas as strings pela string (submatch (0)). Como eu faço o vim fazer o que estou tentando fazer?

    
por MYV 12.06.2013 / 22:46

2 respostas

6
A subpasta

não é a melhor solução para isso. Eu estava fazendo algum helpgrep em \=

E eu acho isso:

                *sub-replace-special* *:s\=*
When the {string} starts with "\=" it is evaluated as an expression, see
|sub-replace-expression|.  You can use that for any special characters.
Otherwise these characters in {string} have a special meaning:

Se você insistir em usar sub-teste, poderá usá-lo desta maneira:

s:\a*\a:\='"'.submatch(0).'"'

No entanto, uma solução mais legível é:

s:\a*\a:"
                *sub-replace-special* *:s\=*
When the {string} starts with "\=" it is evaluated as an expression, see
|sub-replace-expression|.  You can use that for any special characters.
Otherwise these characters in {string} have a special meaning:
"
    
por 12.06.2013 / 23:19
4

Você precisa capturar cada correspondência cercando o padrão com um par de chaves \( e \) . Feito isso, você pode usar o texto real combinado no padrão de substituição com .

O comando a seguir faz o que você deseja:

:s:\(\a*\a\):"":g
    
por 12.06.2013 / 23:11

Tags