2012-03-02 12 views
16

No puedo encontrar una respuesta a esto en google o aquí o en los archivos de ayuda.¿Qué significa = ~ en VimScript?

if "test.c" =~ "\.c" 

Al principio pensé =~ extremos medias en, pero observan estos resultados:

Command        Result 
echo "test.c" =~ "\.c"    1 
echo "test.c" =~ "\.pc"    0 
echo "test.pc" =~ "\.c"    1 
echo "testc" =~ "\.c"     1 
echo "ctest" =~ "\.c"     1 
echo "ctestp" =~ "\.pc"    0 
echo "pctestp" =~ "\.pc"    0 
echo ".pctestp" =~ "\.pc"    0 

Una explicación sería grande. Un enlace a un sitio que intente descifrar VimScript sería incluso mejor.

+0

No hay manera de ' "ctest = ~ "\ .c" 'y'" .pctestp \ .pc "' – Benoit

+0

Por cierto, es probable que sea mejor" ~!". evite '= ~', pero use '= ~ #' o '= ~?' en su lugar, que especifican explícitamente si desea mayúsculas y minúsculas o insensibilidad. Con un simple '= ~', depende de la configuración actual del usuario. info: http://vimdoc.sourceforge.net/htmldoc/eval.html#expr4 –

Respuesta

35

From the Vim documentation, hace una coincidencia de patrón del operando derecho (como un patrón) dentro de la izquierda.

Para las cadenas hay dos elementos más:

a =~ b  matches with 
    a !~ b  does not match with 

El elemento de la izquierda "a" se utiliza como una cadena. El ítem "b" correcto se usa como un patrón, como lo que se usa para buscar. Ejemplo:

:if str =~ " " 
    : echo "str contains a space" 
    :endif 
    :if str !~ '\.$' 
    : echo "str does not end in a full stop" 
    :endif 

Usted puede tratar de casos de prueba de nuevo. Consigo, por ejemplo, es incompatible con el suyo:

echo ".pctestp" =~ "\.pc"    1 

Y comillas dobles vs comillas simples parecen afectar a cómo se interpreta la barra invertida:

echo "test.pc" =~ "\.c"    1 
echo "test.pc" =~ '\.c'    0 
+0

Gracias, fueron las comillas dobles que me dieron el comportamiento extraño – puk

+0

@puk Lo que aún no he localizado son los documentos que explican el diferencias en las citas ... –

+1

Encuentro que la documentación en vim está por todas partes. Las páginas ': help' son extremadamente útiles. ul para cosas simples como 'd' o': ls', pero inútil si no sabes lo que estás buscando (es decir. 'stridx()'). Del mismo modo, el wiki de vim es ideal para teclas y comandos, pero no tanto para funciones como el 'stridx()' antes mencionado. – puk

3

A partir de los documentos:

  • http://vimdoc.sourceforge.net/htmldoc/usr_41.html

    Para cuerdas, hay dos elementos más:

    a =~ b  matches with 
    a !~ b  does not match with 
    

    El elemento izquierdo "a" se utiliza como una cadena. El ítem "b" correcto se usa como un patrón , como lo que se usa para buscar. Ejemplo:

    :if str =~ " " 
    : echo "str contains a space" 
    :endif 
    :if str !~ '\.$' 
    : echo "str does not end in a full stop" 
    :endif