2009-03-27 18 views
5

C'è un semplice comando che sposta le linee da una finestra all'altra. Attualmente vado in una finestra, strattone le linee e poi incollo l'altra finestra.spostare le linee da una finestra all'altra

Mi piacerebbe sapere se riesco a farlo senza cambiare windows.

+0

si dovrebbe essere più descrittivo nel vostro problema. Stai cercando di trovare un modo più semplice per tagliare e incollare? –

+0

Sto cercando qualcosa che non mi richiede di cambiare windows. –

+0

Se non si cambiano le finestre, in che modo Vim dovrebbe sapere dove si desidera incollare? – strager

risposta

7

Farei questo genere di cose con una macro. Quindi, per registrare una macro per a, qa. Quindi yy per strattonare la linea,: bnext per cambiare i buffer, p per incollare la linea, quindi bnext di nuovo per tornare al buffer originale (sulla linea che hai iniziato). Quindi premi q per interrompere la registrazione.

Quindi per copiare, cambiare finestra, incollare e tornare indietro, è sufficiente utilizzare @a. Oppure mappalo su un tasto funzione (mappa @a).

N.B. Appena notato nei commenti hai avuto più buffer, quindi ovviamente dovresti registrare la tua macro di conseguenza.

+0

Immagino, questo è quello che potrei dover fare. Usa macro o scrivi uno script. –

+0

Trovo che sia abbastanza semplice farlo in questo modo. I macro Vim sono tuoi amici;). – RedBlueThing

1

Dubito che sia possibile. Ma ecco un post interessante about 100 Vim commands ogni programmatore dovrebbe sapere se sei interessato.

2

utilizzando vimdiff è possibile utilizzare la funzione di diffusione o di modifica per copiare le modifiche tra i buffer. Dal manuale:

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

Sto imparando vimdiff (ho usato Beyond Compare per unire in Windows) e vimdiff sembra essere un ottimo strumento per l'unione. Nessuna programmazione, fusione in tempo reale. Non voglio scrivere uno script per questo genere di cose. L'apprendimento di alcuni comandi vi non è molto doloroso. –

1

si potrebbe provare questa mappatura:

nmap <C-y> Y<C-w>wp<C-w>w 
Problemi correlati