¿Cuál es el modo de selección y cuándo es relevante usarlo?

37

Accidentalmente presioné ghen modo normal y comencé una selección, así que busqué el documento y lo encontré :h Select-mode.

Por lo que entiendo, el modo de selección está cerca del modo visual, excepto que:

  • Si escribe un carácter imprimible <CR>o <BS>eliminará la selección, comience el modo de inserción y reemplace la selección con la entrada.
  • hjkl y otro movimiento en modo normal o visual no extenderá la selección a menos que tengan el prefijo <Shift>
  • <CTRL-O>y <CTRL-G>cambiará al modo visual.
  • El documento también dice lo siguiente, que si entiendo correctamente significa que es posible hacer una selección en línea que luego se trata de forma característica:

    Cuando se usa un operador en el modo Seleccionar, y la selección es en línea, las líneas seleccionadas se operan, pero como en la selección de caracteres. Por ejemplo, cuando se elimina una línea completa, luego se puede pegar a la mitad de una línea.

Estoy un poco confundido porque no entiendo por qué se creó este modo: todo lo que puedo ver es que es menos conveniente que el modo visual y no proporciona más funciones.

Además, todas las búsquedas que he realizado dan resultados sobre la selección en modo visual, pero no tratan el modo de selección.

Entonces mis preguntas son:

  • ¿Por qué se creó el modo de selección?
  • ¿Cuáles son sus ventajas en comparación con el modo visual?
  • ¿Cuál es un caso de uso en el que es más interesante usar el modo de selección?

MetaNote No tengo idea de qué etiqueta es relevante para esta pregunta, no dude en volver a etiquetar si es necesario.

statox
fuente
Para mí, esto suena como lo que esperarías de la mayoría de los editores de GUI. (Seleccionar una línea no significa que irá a una nueva línea al pegar, las teclas Mayús + flechas la extienden, escribir reemplaza la selección, todo lo que esperaría de, por ejemplo, el bloc de notas).
muru
@muru: Estoy de acuerdo en que recuerda a este tipo de editor, pero ¿significa que este modo se habría implementado solo para complacer a algunos usuarios que querrían usar Vim como un editor de texto pobre? Eso me parece bastante extraño en realidad.
statox
en realidad, esa propiedad de pegado es útil en algunos casos. Estoy seguro de que alguien ha publicado una pregunta sobre pegar así aquí. Y en cuanto a la sobrescritura, eso ahorra una pulsación de tecla (no tiene que presionar c), por lo que, dependiendo de lo que desee hacer, el modo de selección podría ser útil. Lástima que sigo olvidándolo.
muru
Intentaré encontrar esta pregunta entonces. Para la sobrescritura, realmente no siento que csea ​​una pulsación de tecla guardada porque la selección no es tan conveniente como en el modo visual (ya que no se puede usar eo iwdirectamente).
statox
1
Tienes razón: cuando 'selectmode'contiene mousey 'mouse'contiene una bandera para el modo actual, al seleccionar con el mouse se iniciará el modo de selección (según el documento).
statox

Respuestas:

23

El objetivo del modo de selección es proporcionar un comportamiento de selección similar al que se usa en los editores convencionales.

En la misma nota, está mswin.vim, que cambia un montón de opciones y asignaciones para que Vim se sienta como un editor convencional.

Solo puedo suponer que se agregaron para complacer a un subconjunto de usuarios de Vim, probablemente en el momento en que Vim fue portado a Windows (puedo sentir un poco de desdén por Windows en el documento).

De todos modos, el modo de selección es esencial para los complementos de expansión de fragmentos y se puede abusar para divertirse y obtener ganancias:

nnoremap § *``gn<C-g>
inoremap § <C-o>gn<C-g>
snoremap <expr> . @.
romainl
fuente
2
Creo que es bastante sorprendente portar Vim en Windows y crear este tipo de modo para complacer a los usuarios: si quisieran un editor "clásico", ¿por qué usarían Vim entonces? Pero parece ser la única explicación, así que ... Además, no entiendo realmente el beneficio de sus asignaciones: por lo que entiendo, seleccionan la palabra debajo del cursor en el modo de selección, una vez que haya hecho eso, ¿por qué? ¿útil?
statox
1
Una vez que se selecciona la palabra, escriba algo, luego presione §para seleccionar la siguiente aparición, escriba otra cosa y luego presione §nuevamente para seleccionar la siguiente aparición, y así sucesivamente. Puede presionar .para repetir la última inserción. Es una variante de "la fórmula de puntos".
romainl
Aún no lo entiendo. ¿De qué manera el comportamiento de selección se parece más a los editores convencionales?
still_dreaming_1
77
@ still_dreaming_1, en un editor convencional, escríbalo fooy selecciónelo. No necesita presionar ninguna tecla para reemplazar lo seleccionado, ¿verdad? Eso es lo que emula el modo de selección.
romainl
1
@romainl, ¿cuál es ese carácter de "doble S" que estás escribiendo? ¿Cómo escribes ese personaje?
Michael