2009-03-27 12 views
5

¿Hay un comando simple que moverá líneas de una ventana a otra? Actualmente voy a una ventana, tiro las líneas, y luego pego en la otra ventana.líneas en movimiento de una ventana a otra

Me gustaría saber si puedo hacerlo sin cambiar las ventanas.

+0

que debería ser más descriptiva en su problema. ¿Estás tratando de encontrar una manera más fácil de cortar y pegar? –

+0

Estoy buscando algo que no requiera que cambie las ventanas. –

+0

Si no cambia las ventanas, ¿cómo sabe Vim dónde quiere pegar? – strager

Respuesta

7

Haría este tipo de cosas con una macro. Entonces, para grabar una macro para a, qa. Luego yy para tirar de la línea,: bnext para cambiar los búferes, p para pegar la línea, luego bnext nuevamente para volver al búfer original (en la línea que comenzó). Luego presione q para detener la grabación.

Para copiar, cambiar ventanas, pegar y volver a cambiar, solo necesita usar @a. O asignarlo a una tecla de función (mapa @a).

N. B. Recién noté en los comentarios que tenía varios buffers, así que obviamente necesitaría grabar su macro en consecuencia.

+0

Supongo, eso es lo que debería hacer. Usa macros o escribe una secuencia de comandos. –

+0

Me parece bastante sencillo hacerlo de esta manera. Las macros de Vim son su amigo;). – RedBlueThing

1

Dudo que esto sea posible. Pero aquí hay una publicación interesante about 100 Vim commands que todo programador debería saber si le interesa.

2

usando vimdiff puede usar diffput o diffget para copiar los cambios entre los buffers. Del manual:

There are two commands to copy text from one buffer to another. The result is 
that the buffers will be equal within the specified range. 


         *:diffg* *:diffget* 
:[range]diffg[et] [bufspec] 
    Modify the current buffer to undo difference with another 
    buffer. If [bufspec] is given, that buffer is used. 
    Otherwise this only works if there is one other buffer in diff 
    mode. 
    See below for [range]. 


         *:diffpu* *:diffput* 
:[range]diffpu[t] [bufspec] 
    Modify another buffer to undo difference with the current 
    buffer. Just like ":diffget" but the other buffer is modified 
    instead of the current one. 
    See below for [range]. 
+0

Estoy aprendiendo vimdiff (he usado Beyond Compare para combinar en Windows) y vimdiff resulta ser una gran herramienta para la fusión. Sin programación, sobre la marcha fusión. No quiero escribir un script para este tipo de cosas. Aprender algunos comandos vi no es muy doloroso. –

1

usted podría intentar este mapeo:

nmap <C-y> Y<C-w>wp<C-w>w 
Cuestiones relacionadas