Come posso duplicare un'intera riga in Vim in modo simile a Ctrl+ Din IntelliJ IDEA / Resharper o Ctrl+ Alt+ ↑/ ↓in Eclipse ?
Yes Plocazione. :)
Come posso duplicare un'intera riga in Vim in modo simile a Ctrl+ Din IntelliJ IDEA / Resharper o Ctrl+ Alt+ ↑/ ↓in Eclipse ?
Yes Plocazione. :)
Risposte:
yyo Yper copiare la linea (Memo: y ANK )
o
ddal d elete linea (copie Vim quello che è stato eliminato in un clipboard-like "registrare", come un taglio di funzionamento)
poi
pa p aste del copiati o cancellati del testo dopo la linea corrente
o
Pper p aste il testo copiato o eliminato prima che la linea corrente
Ya y$. (Coerentemente con De C; (ma non compatibile con Vi (nessuno se ne frega.))) Questo è persino proposto in :help Y.
yjo yk, soprattutto perché non raddoppi su un personaggio. Inoltre, ykè una versione all'indietro che 2yynon può essere eseguita e puoi inserire il numero di righe da raggiungere all'indietro y9jo y2k, ecc. L'unica differenza è che il tuo conteggio deve essere n-1per un totale di nrighe, ma la tua testa può imparare che Comunque.
Modalità normale: vedi altre risposte.
Il modo Ex :
:t. duplicherà la linea,:t 7 lo copierà dopo la riga 7,:,+t0copierà la riga corrente e quella successiva all'inizio del file ( ,+è sinonimo dell'intervallo .,.+1),:1,t$copierà le linee dall'inizio fino alla posizione del cursore fino alla fine ( 1,è sinonimo dell'intervallo 1,.).Se devi spostare invece di copiare, usa :minvece di :t.
Questo può essere davvero potente se lo combini con :go :v:
:v/foo/m$ sposta tutte le linee che non corrispondono al modello "pippo" alla fine del file.:+,$g/^\s*class\s\+\i\+/t.copierà tutte le righe successive del modulo class xxxsubito dopo il cursore.Riferimento: :help range, :help :t, :help :g, :help :me:help :v
:in modalità visiva, viene trasformato in '<,'>modo da preselezionare l'intervallo di linee su cui si è estesa la selezione visiva. Quindi, in modalità visiva, :t0copierà le linee all'inizio.
:t.è la risposta esatta alla domanda.
YPo Ypo yyp.
Ydi solito viene rimappato a y$(yank (copia) fino alla fine della riga (dalla posizione corrente del cursore, non all'inizio della riga)). Con questa riga in .vimrc::nnoremap Y y$
yyP

Non c'è niente di più semplice di così! Dalla modalità normale:
yy
quindi passa alla riga in cui desideri incollare e
p
yy
strapperà la linea corrente senza eliminarla
dd
eliminerà la riga corrente
p
sarà putuna linea afferrata da uno dei metodi precedenti
Fai questo:
Innanzitutto, yyper copiare la riga corrente, quindip per incollare.
Se vuoi un altro modo:
"ayy: Questo memorizzerà la riga nel buffer a.
"ap: Questo metterà il contenuto del buffer asul cursore.
Ci sono molte varianti su questo.
"a5yy: Questo memorizzerà le 5 righe nel buffer a.
Vedi " File di aiuto di Vim per più divertimento.
yyp - ricordalo con "yippee!"
Più righe con un numero tra:
y7yp
:.,.+7 copy .+7: P
Mi piace: Shift+ v(per selezionare immediatamente l'intera riga e consentire di selezionare altre righe se lo si desidera), y, p
Puoi anche provare <Cx> <Cl> che ripeterà l'ultima riga dalla modalità di inserimento e ti porterà una finestra di completamento con tutte le righe. Funziona quasi come <Cp>
Per qualcuno che non conosce vi, alcune risposte dall'alto potrebbero fuorviarlo con frasi come "incolla ... dopo / prima della riga corrente ".
In realtà è "incolla ... dopo / prima del cursore ".
yyo Yper copiare la riga
o
dd per eliminare la riga
poi
pper incollare il testo copiato o eliminato dopo il cursore
o
Pper incollare il testo copiato o eliminato prima del cursore
Per ulteriori associazioni di tasti, è possibile visitare questo sito: vi Elenco completo di collegamenti a chiave
L'impostazione predefinita è yyp, ma sto usando questo rebinding da circa un anno e lo adoro:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
So di essere in ritardo alla festa, ma comunque; Ho questo nel mio .vimrc:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
il :copy comando copia semplicemente la linea o l'intervallo selezionato (sempre linee intere) al di sotto del numero di riga indicato come argomento.
In modalità normale ciò che fa è copy . copiare questa riga appena sotto questa riga .
E in modalità visiva si trasforma in '<,'> copy '> copia dall'inizio della selezione alla fine della selezione fino alla riga sotto la fine della selezione .
Per coloro che iniziano a imparare vi, ecco una buona introduzione a vi elencando i comandi vi affiancati al tipico movimento del cursore dell'editor della GUI di Windows e ai tasti di scelta rapida. Elenca tutti i comandi di base tra cui yy(copia riga) e p(incolla dopo) oP (incolla prima).
Se desideri duplicare una riga e incollarla subito sotto l'attuale come, proprio come in Sublime Ctrl+ Shift+ D, puoi aggiungerla al tuo .vimrcfile.
nmap <S-C-d> <Esc>Yp
Oppure, per la modalità Inserisci:
imap <S-C-d> <Esc>Ypa
ialla fine per rientrare si interrompe undo, quindi la soluzione per duplicare le linee in modalità di inserimento non è così banale come sembra.
imap <S-C-d> <Esc>Ypi inserire la modalità e nmap <S-C-d> <Esc>Ypin modalità normale