Para unir una palabra, se puede usar
\v(\w+)
De la ayuda vim :h \w
:
\ w carácter de palabra: [0-9A-Za-z_]
Esto funciona exactamente como se describe en el manual. Sin embargo, quiero hacer coincidir las palabras que contienen caracteres más allá a-z
, por ejemplo,
prästgården . Hacer coincidir la expresión regular \v(\w+)
con
prästgården produce tres coincidencias:
prästgården
^^ ^^^ ^^^^
¿Cómo unir palabras que contienen caracteres más allá a-z
? Mi configuración regional está configurada en inglés y, si es posible, me gustaría mantenerla así.
Editar: las palabras pueden no pertenecer a una sola configuración regional, por ejemplo
prästgården
treść
vim
regular-expression
Marco
fuente
fuente
[[:alpha:]]\+
Se supone que las clases de caracteres POSIX (por ejemplo, en este caso) hacen lo que usted desea aquí, pero de acuerdo con los documentos de Vim (:help regex
) no: "Estos elementos solo funcionan para caracteres de 8 bits". Sí funciona aquí con Vim 7.3 en OS X 10.8, pero Vim 7.3 en Linux no funciona, así que supongo que hay algo específico de Apple en este Vim que lo permite. También descubrirá que hacerlo a través del enlace Vim Perl también falla, a pesar de que Perl tiene un muy buen soporte Unicode. Es posible que deba cambiar a un script Perl externo, para que pueda activar el soporte completo de Unicode.\p{Word}
lugar de una clase de caracteres POSIX. Hay muchos casos de excepción en el manejo de la clase de caracteres POSIX de Perl, que evita cuando utiliza las propiedades Unicode.Respuestas:
Vim (a partir de la versión 7.3) es muy limitado con respecto al soporte de caracteres no ASCII en los patrones. En particular,
\w
solo coincide con letras ASCII, lo cual es de utilidad limitada.Hay algunos patrones de clase de caracteres que admiten Unicode. Es de interés para usted
\I
, que en general coincide con letras y solo letras, más_
y@
. Al menos en la compresión de Debian (en un entorno local UTF-8), hay errores; por ejemplo,×
y÷
coinciden como letras, pero todas las letras latinas acentuadas parecen reconocerse correctamente.\I
se puede configurar a través de laisident
opción, al menos para la parte ASCII.Si desea un soporte serio de Unicode, deberá confiar en una herramienta externa. Por ejemplo,
perl -C -e '/\p{L}/'
para que coincida con las letras UTF-8 (suponiendo un entorno local UTF-8).fuente
Uso
\k
. Veriskeyword
opción.fuente
Funciona también para cirílico
Un poco más complicado y falla con cirílico
Doc .
Probado en Vim 7.4.
fuente
[=l=]
a la lista que cubriríał
(por ejemplo, złoty), etc. también. Pero esto ya falla para Rusia. De todos modos, gracias por compartir.