Corresponde à palavra que contém caracteres além de a-zA-Z

13

Para corresponder a uma palavra, pode-se usar

\v(\w+)

Da ajuda do vim :h \w :

\w word character: [0-9A-Za-z_]

Isso funciona exatamente como descrito no manual. No entanto, eu quero corresponder palavras que contenham caracteres além de a-z , por exemplo prästgården . Correspondendo à expressão regular \v(\w+) contra prästgården rende três correspondências:

prästgården
^^ ^^^ ^^^^

Como combinar palavras contendo caracteres além de a-z ? Minha localidade está configurada para inglês e, se possível, eu gostaria de continuar assim.

Editar: As palavras podem não pertencer a um único local, por exemplo

prästgården
treść
    
por Marco 07.01.2013 / 01:22

3 respostas

8

O Vim (a partir da versão 7.3) é muito limitado em relação ao suporte de caracteres não-ASCII em padrões. Em particular, \w corresponde apenas a letras ASCII, que é de utilidade limitada.

Existem alguns padrões de classes de caracteres que suportam Unicode. De interesse para você é \I , que geralmente combina letras e apenas letras, mais _ e @ . Pelo menos no Debian squeeze (em uma localidade UTF-8), existem erros; por exemplo, × e ÷ são correspondidos como letras, mas todas as letras acentuadas em latim parecem ser reconhecidas corretamente. \I pode ser configurado através da opção isident , pelo menos para a parte ASCII .

Se você quiser suporte sério a Unicode, precisará contar com uma ferramenta externa. Por exemplo, perl -C -e '/\p{L}/' para corresponder às letras UTF-8 (assumindo uma localidade UTF-8).

    
por 08.01.2013 / 02:15
2

Funciona também para o cirílico

\v\k

Um pouco mais complicado e falha com o cirílico

\v(\c[0-9a-z_[=a=][=c=][=e=][=i=][=l=][=n=][=o=][=r=][=s=][=t=][=u=][=y=][=z=]])

Doc .

Testado no Vim 7.4.

    
por 04.06.2015 / 00:04
2
por 11.09.2015 / 19:14