Como expressar “Existe um símbolo especificado nos seguintes números desconhecidos de caracteres” em regex (vim)?

1

Eu tenho muitos exemplos de código python em meus arquivos markdown, que devem ser prefixados com >>> symbols.

Então eu escrevo uma função vim para fazer este trabalho:

function AddShellPrompt() range
    let lnum = a:firstline
    while lnum <= a:lastline
        let replaced_line = substitute(getline(lnum), '^\s\+', '&>>>', '')
        call setline(lnum, replaced_line)
        let lnum += 1
    endwhile
endfunction

O problema é, para texto bruto, como:

pow(2, 3)
8

Só preciso de adicionar >>> antes de pow(2, 3) , mas não antes de 8 . Então eu preciso expandir meu regex.
Vem a mim que, se eu adicionar apenas >>> para uma linha que contenha qualquer caractere de +-*/%(= .
Eu posso conseguir um bom resultado (embora não seja perfeito).

Mas o problema é, como escrever regex (especialmente no vim) que expressa Alguns dos caracteres do conjunto dado apareceram na linha atual?

    
por Zen 07.08.2015 / 11:29

1 resposta

1

vim suporte a mecanismos de regex Expressão de colchetes , você pode definir uma classe de caracteres como uma sequência de caracteres entre colchetes [...] :

/[+\-*/%(=]/

corresponderá a qualquer caractere desses caracteres (você precisa escapar de - , que definiu um intervalo entre os caracteres para corresponder literalmente)

Para verificar se a linha atual contém algum conjunto de caracteres:

if getline(".") =~ '[+\-*/%(=]'
  echo "Match"
endif
    
por 07.08.2015 / 11:57