Come strappare una linea con un certo numero di linea?


Risposte:


59

Da :help :yank:

:[range]y[ank] [x]      Yank `[range]` lines [into register x].

Quindi, per strappare la linea 4, si dovrebbe digitare:

:4yank

Nota che puoi farlo facilmente dalla modalità di inserimento con <C-o>; questo ti permette di eseguire un comando, dopo di che sei tornato alla modalità di inserimento; per esempio:

<C-o>:4yank

Ovviamente puoi anche usare altri intervalli. Qualche esempio:

  • Linee da 1 a 3: :1,3yank
  • L'intero buffer: :%yank
  • Dalla riga corrente alla fine del buffer: :.,$:yank
  • La riga corrente e le successive 3: :.,+3yank
  • La riga corrente e le precedenti 3: :-3,.yank
  • La riga 3 righe sopra la riga corrente: :-3yank

Le cose più utili da ricordare sulle gamme:

  • È sotto forma di :line1,line2command.
  • A .è la linea corrente (nella maggior parte dei casi puoi effettivamente omettere il punto; :.,+3yanke :,+3yanksono uguali)
  • Specificare le linee relative alla posizione corrente con +ne -n.

Vedi :help [range]per maggiori informazioni.


6
Punti bonus per menzionare <Co>, lo sto sottoutilizzando.
PhilippFrank,

7
Vale anche la pena ricordare che puoi abbreviare :4yankcon:4y
NewbieOnRails

35

Oltre alla risposta di Carpetsmoker, dovrei sottolineare il fantastico :help :me :help :t.

Se vuoi copiare la riga 4 a destra sotto la riga corrente puoi farlo:

:4t.

o quello, se vuoi copiare quella linea proprio sopra la linea corrente:

:4t-

1

Oltre ai comandi ex-mode che hai ottenuto, puoi ottenerlo anche in modalità di comando, ad esempio: 4GY''- che significa: vai alla riga 4 ( 4G), yank line ( Y) e torna alla riga precedente ( '').

Puoi anche usare i segni di salto; per la tua seconda domanda, ad esempio: mm3kY'm- che significa: imposta mark m ( mm), vai tre righe su ( 3k), yank line ( Y), ritorna a mark m ( 'm).


1
L'uso di `` è probabilmente una raccomandazione migliore di '' poiché il primo torna alla stessa riga e colonna. Idem per `m vs. 'm.
Jamessan,

Sono d'accordo. (Qualche idea su come creare backtics letterali nel markup wiki poiché hanno un significato speciale?) - Altrimenti il ​​tuo commento servirà come emendamento alla mia risposta e come suggerimento per i lettori.
Janis,

È necessario utilizzare più backtick per delimitare il codice inline (cfr. Daringfireball.net/projects/markdown/syntax#code ). So che funziona con domande / risposte, ma non sono riuscito a farlo funzionare nel mio commento.
Jamessan,

1

Digita semplicemente

:4y

strappare la linea 4

andrà nel registro senza nome. Quindi, (ad esempio) puoi usarlo pper metterlo altrove. Puoi anche usare [n]p, ad esempio, 10p per incollarlo 10 volte.

Puoi inserirlo in un registro denominato come "a" con

:4y a

2
La parte relativa al metterlo in un registro denominato con "ay4 non sembra corretta. Se lo fai, Vim ti aspetterà che tu dica" 4 cosa? ". Ad esempio, se premi Hit invierà 4 righe a partire da la posizione corrente, se si digita / foo <Invio>, si strapperà fino alla 4a occorrenza successiva di "pippo", ecc.
Don Hatch,

L'ultimo comando dovrebbe leggere 4G"ayy.
romainl,

0

Tu puoi fare

:10y <Enter> (to copy the line 10)
p (paste line 10 where the cursor is)

L'impostazione del numero relativo aiuta anche a spostarsi tra le righe di codice.

:set relativenumber

Ora puoi copiare la 5a riga sopra il cursore con:

:-5y <Enter>
:p (to paste)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.