2011-04-06 22 views
11

Quiero tomar una selección visual y darle la vuelta para que la primera línea de la selección esté en la parte inferior. De:¿Cómo voltear las líneas de una selección visual en vim?

<other_stuff> 
The 
wheels 
go 
round. 
<more_stuff> 

Visual seleccione el sentnce y luego darle la vuelta:

<other_stuff> 
round. 
go 
wheels 
The 
<more_stuff> 

Cualquier idea de cómo hacer esto simplemente. Preferiría no tener que instalar un complemento para hacerlo.

+0

Relacionado: [Invertir texto seleccionado @ Wikimedia] (http://vim.wikia.com/wiki/Reverse_selected_text) – Palec

+1

Duplicar en [SU]: [Cómo invertir las líneas seleccionadas para pedir en vim?] (Http://superuser.com/q/189947/269404) – Palec

Respuesta

17

Cuando se hace una selección visual de Vim realiza automáticamente los marcadores '< y '> en el inicio y final del bloque, respectivamente, para que pueda hacer lo que quiera de varias maneras.

En el modo normal: '>dd'<P

como un comando por ejemplo: :'>d | '<-1 put

NB los marcadores permanecen después de salir de modo visual, por lo que no tiene que permanecer en el modo visual para utilizar estos.

edición:

Vaya, leí mal la pregunta y pensó sólo quería poner la última línea en la salida, pero que quieren todo el bloque invierte. La solución más simple si usted está en un sistema UNIX:

:'<,'>!tac 

Este tuberías a través de las líneas del programa 'inversa gato' de UNIX.

+5

O 'tail -r' en OS X. – silvenon

+0

¡Genial! Hay situaciones en las que un '!' Ahorra mucho tiempo. –

3

Según :help 12.4 puede marcar la primera línea con el mt, pasar a la última línea que desea revertir a continuación, utilizar el comando :'t+1,.g/^/m 't

+0

Asegúrese de marcar la última línea que haga * not * want moved; no es la primera línea que quieres mover. – Alan

1

Para los más cómodos con Visual Modo:
1. Identificar el número de línea por encima de la selección que desea utilizar volteado :set nu.
2. Use Shift-V para resaltar la selección que desea voltear (modo visual).
3. :g/^/m <Line number from step 1>.

Tenga en cuenta que en el modo visual se mostrará automáticamente como :'<,'>g/^/m <Line number> cuando se escribe en el comando de 3.

Este comando funciona moviendo la selección de una línea a la vez en el número de línea que le dan . Cuando el segundo elemento se inserta en el número de línea dado, presiona el primero hacia el número de línea + 1. Luego, el tercero presiona el primero y el segundo abajo, y así sucesivamente hasta que toda la lista se haya insertado en el número de línea individual, lo que da como resultado lista ordenada inversa.

Cuestiones relacionadas