2012-11-28 9 views
5

So che questi comandi in Vim:Come faccio a unire la linea sopra dopo la linea corrente?

J: unire la linea di sotto dopo riga corrente
-J: unire la linea di corrente dopo riga sopra

ma come faccio unisco la riga sopra dopo la corrente linea?

+8

'kddpkJ' .......? –

+2

Per salvare una sequenza di tasti, 'ddkPJ'. E se fai molti scambi di linee, considera la possibilità di creare [mappature come in questo suggerimento] (http://vim.wikia.com/wiki/VimTip646#Mappings_to_move_lines). –

risposta

2

Ci sono molti modi per farlo. Uno potrebbe essere ... cancellando la linea di cui sopra e aggiungendo alla fine della linea di seguito:

k move up one line 
^ move to the first printable character 
y$ yank to the end of the line 
"_d get rid of the now useless line by deleting it into the black hole register 
$ move to the end of the line 
p put the deleted text 
+1

Sarebbe più semplice scambiare le righe e poi 'J'oin (come [@WilliamPursell suggerisce] (http://stackoverflow.com/questions/13609736/how-do-i-join-the-line-above -Dopo-corrente-line # comment18659642_13609736)). – bitmask

+0

Sì, lo so. Ho optato per un approccio "letterale". Verrei anche io con il metodo di William Pursell. – romainl

+0

Si noti che 'J' gestisce gli spazi in modo diverso da un join letterale. Cioè, se uno vuole i risultati che sarebbero prodotti da 'J',' k^d $ k $ p' farebbe qualcosa di diverso! – bitmask

1

È inoltre possibile utilizzare l'ex comando di

:m-2|j 
  • m-2 ha l'effetto di spostare il linea corrente a 2 linee sopra la sua posizione corrente; questo cambia la posizione della linea corrente e la linea sopra.
  • j unisce la riga corrente e la riga sopra, inserendo uno spazio tra i due. Utilizzare j! se non si desidera lo spazio.
  • | separa i 2 ex-comandi

Questo ex-comando è un breve modo di scrivere quanto segue

:move .-2 
:join 
Problemi correlati