Necesito (visual) seleccionar un rango de líneas desde la línea de comando.
Por ejemplo, el siguiente comando :?^\s*for?+,/^\s*end/- pimprime todas las líneas contenidas entre una fory end(de forma exclusiva). En lugar de realizar la operación de impresión, me gustaría cambiar al modo visual con esas líneas resaltadas. Busqué en el manual pero no pude encontrar un comando como ese.
command-line
visual-mode
nicmus
fuente
fuente

Respuestas:
Los límites de una selección de modo visual están definidos por las marcas
<y>.Por lo tanto, el siguiente comando ingresará al modo visual con las líneas 5 a 10 (inclusive) seleccionadas:
:5mark <establece el inicio de la selección en la línea 5,:10mark >establece el final de la selección en la línea 10,gventra en modo visual con el área definida arriba seleccionada,Vrealiza la selección en línea.Puede pasar cualquier rango de Vim al
:markcomando: lo siguiente ingresará al modo visual usando las expresiones regularesfooybarpara definir los límites del área de selección:El siguiente comando es una versión más simple de lo anterior, pero depende de la posición del cursor:
Para más explicaciones, ver:
:help mark-motions:help :mark:help ranges:help gv:help v_V:help :execute:help search()help expr-.fuente
?^\s*for?+ mark < | /^\s*end/- mark > | norm gv+y-en @ nicmus está ajustando los rangos para que la selección no incluya las líneas que coinciden con las expresiones regulares. (Ver:help range).operador de concatenación realmente me rechazó, así que aquí hay un ejemplo si alguien siente lo mismo::execute "l" . "s"producirá la misma salida que:ls.