Come posso duplicare un'intera riga in Vim in modo simile a Ctrl+ Din IntelliJ IDEA / Resharper o Ctrl+ Alt+ ↑/ ↓in Eclipse ?
Y
es P
locazione. :)
Come posso duplicare un'intera riga in Vim in modo simile a Ctrl+ Din IntelliJ IDEA / Resharper o Ctrl+ Alt+ ↑/ ↓in Eclipse ?
Y
es P
locazione. :)
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
Y
a y$
. (Coerentemente con D
e C
; (ma non compatibile con Vi (nessuno se ne frega.))) Questo è persino proposto in :help Y
.
yj
o yk
, soprattutto perché non raddoppi su un personaggio. Inoltre, yk
è una versione all'indietro che 2yy
non può essere eseguita e puoi inserire il numero di righe da raggiungere all'indietro y9j
o y2k
, ecc. L'unica differenza è che il tuo conteggio deve essere n-1
per un totale di n
righe, 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,:,+t0
copierà 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 :m
invece di :t
.
Questo può essere davvero potente se lo combini con :g
o :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 xxx
subito dopo il cursore.Riferimento: :help range
, :help :t
, :help :g
, :help :m
e: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, :t0
copierà le linee all'inizio.
:t.
è la risposta esatta alla domanda.
YP
o Yp
o yyp
.
Y
di 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à put
una 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 a
sul 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 .vimrc
file.
nmap <S-C-d> <Esc>Yp
Oppure, per la modalità Inserisci:
imap <S-C-d> <Esc>Ypa
i
alla 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>Yp
in modalità normale