Vim: palabra vs PALABRA

82

Estoy aprendiendo Vim y no puedo entender la diferencia entre wordy WORD.

Obtuve lo siguiente del manual de Vim.

Una palabra consta de una secuencia de letras, dígitos y guiones bajos, o una secuencia de otros caracteres que no están en blanco, separados por espacios en blanco (espacios, tabulaciones,). Esto se puede cambiar con la opción 'iskeyword'. Una línea vacía también se considera una palabra.

Una PALABRA consiste en una secuencia de caracteres que no están en blanco, separados por espacios en blanco. Una línea vacía también se considera una PALABRA.

Siento wordy WORDsomos lo mismo. Ambos son una secuencia de caracteres que no están en blanco separados por espacios en blanco. Una línea vacía se puede considerar como wordy WORD.

Pregunta:
¿Cuál es la diferencia entre ellos?
¿Y por qué / cuándo usaría alguien WORDmás word?

Ya he realizado búsquedas en Google y SO, pero su motor de búsqueda lo interpreta WORDcomo si wordestuviera buscando Vim word vs wordy, por supuesto, no encontraría nada útil.

octref
fuente
2
Esto se explica e incluso se ilustra en :h 03.1. Consulte el manual de usuario.
glts
10
Tu pregunta cambió las cosas al buscar vim WORD and word; ahora es el primer resultado de búsqueda :)
Al.G.
1
@ Al.G. Contento de saber. ¡Gracias!
octref
2
Hay ambigüedad en inglés 'o'. Lo que quieren decir es: una palabra consta de una secuencia de (letras O dígitos O guiones bajos), XOR (una secuencia de otros caracteres que no están en blanco), separados por espacios en blanco (espacios, tabulaciones,).
user1433150
@ user1433150 que fue útil gracias. Pero incluso con esa aclaración todavía hay algo confuso. Dicen: "o una secuencia de otros caracteres que no están en blanco, separados por espacios en blanco (espacios, tabulaciones)", pero si eso es cierto, simplemente significa cualquier palabra. Entonces me parece que dicen "es un conjunto más pequeño XOR todo". ¿Es eso correcto?
Charlie Parker

Respuestas:

113
  • Una PALABRA siempre está delimitada por espacios en blanco .
  • Una palabra está delimitada por caracteres que no son palabras clave , que son configurables. Los caracteres de espacio en blanco no son palabras clave y, por lo general, otros caracteres (como ()[],-) tampoco lo son. Por lo tanto, una palabra suele ser más pequeña que una PALABRA; la navegación por palabras es más detallada.

Ejemplo

This "stuff" is not-so difficult!
wwww  wwwww  ww www ww wwwwwwwww    " (key)words, delimiters are non-keywords: "-! and whitespace
WWWW WWWWWWW WW WWWWWW WWWWWWWWWW   " WORDS, delimiters are whitespace only
Ingo Karkat
fuente
1
Tenga en cuenta que puede usar la palabra clave: set is para cambiar lo que hace 'W'. Consulte: ayuda 'iskeyword' para obtener más información.
Jessie Ross
El ejemplo anterior es incorrecto. Las comillas dobles también son palabras (o parte de una palabra, según la opción 'iskeyword'). Por lo tanto, también debe marcarse con 'w'. Además del guión.
Flashrunner
@Flashrunner Eso depende de la 'iskeyword' opción, como lo menciona Jared Ross. De forma predeterminada, funciona como lo he escrito.
Ingo Karkat
:set iskeyword=a-z,A-Z,\",- |This |"stuff" |is |not-so |difficult|! :set iskeyword=a-z,A-Z |This |"|stuff|" |is |not|-|so |difficult|! |- es donde 'w' se detiene. Como puede ver, siempre es una palabra.
Flashrunner
El comentario de Jared Ross también es incorrecto. iskeyword cambia lo que hace 'w', no 'W'.
Flashrunner
20

Si lo hago viw("seleccionar interior word") mientras mi cursor está encendido appen la siguiente línea, selecciona app:

app/views/layouts/admin.blade.php

Si hago viW( WORD) mientras mi cursor está en el mismo lugar, selecciona toda la secuencia de caracteres. A WORDincluye caracteres que words, que son como palabras en inglés, no, como asteriscos, barras, paréntesis, corchetes, etc.


fuente
El último párrafo de la explicación anterior no está claro. Faltan algunas palabras cruciales que habrían dejado clara la diferencia.
Praym
14

Según documentación de Vim (: h 03.1)

  • Una palabra termina en un carácter que no es una palabra, como ".", "-" o ")".

  • Una PALABRA termina estrictamente con un espacio en blanco. Esta puede no ser una palabra en el sentido normal, de ahí las mayúsculas.

p.ej.

           ge      b          w                             e
           <-     <-         --->                          --->
    This is-a line, with special/separated/words (and some more). ~
       <----- <-----         -------------------->         ----->
         gE      B                   W                       E

Si su cursor está en m (de más arriba)

  • una palabra significaría 'más' (es decir, delimitado por ')' carácter que no es una palabra)

  • mientras que una PALABRA significaría 'más)'. (es decir, delimitado solo por espacios en blanco)

de manera similar, si su cursor está en p (de especial)

  • una palabra significaría 'especial'
  • mientras que una PALABRA significaría 'palabras especiales / separadas /'
Praym
fuente
14

Para complementar las respuestas anteriores ... lo visualizo así; WORD es más grande que la palabra, abarca más ... ingrese la descripción de la imagen aquí

run_the_race
fuente
0

Otra forma de decirlo. Si estás codificando, y quieres moverte a través de la línea deteniéndote en los delimitadores y la línea de cosas que "(). [],:" Usa w.

Si desea omitirlos y simplemente saltar a las palabras, digamos como lo ha hecho una novela o un cuento, use W.

Para codificar, la w pequeña es probablemente la que se usa con más frecuencia. Depende de dónde se encuentre en el código.

eaglerockdude
fuente
0

Eso es un problema de gramática al entender la definición de "palabra".

Al principio me quedo atascado en la versión china de esta definición (podría ser una traducción incorrecta).


La definición es definitivamente correcta, pero debería leerse así:

A word consists of:
   [(a sequence of letters,digits and underscores),
or (a sequence of other non-blank characters)], 
separated with white space (spaces, tabs, <EOL>).

Los caracteres de espacio en blanco solo se necesitaban al delimitar dos tipos iguales de 'palabra'


Más ejemplos entre paréntesis como sigue:

(ejemplo ^ & $% ^ Ejemplo) tres "palabras": (ejemplo), (^ & $% ^) y (Ejemplo)

(^ & ^ & ^ ^ && ^ & ^ ) dos "palabras": (^ & ^ & ^ ^) y (&& ^ & ^ )

(estamos en stackoverflow) cinco "palabras": (we), ('), (re), (in) y (stackoverflow)

IsaacAnthonyHu
fuente