Come sostituire il testo dentro () con il testo precedentemente strappato?


9

Supponiamo che il testo sia stato Fnordstrappato prima e che il mio cursore risieda sulla Briga:

M:mock(Baz)

Come posso cambiare il testo dentro () con il testo precedentemente strappato?

Attualmente, faccio spesso l'errore facendo:

  • di( alias "delete inside ()"
  • MAIUSC + P

ma ciò mi lascia di nuovo con il testo esatto, poiché il testo eliminato verrà spostato nel registro.

Voglio avere:

M:mock(Fnord)


1
@Rich La domanda fornita copre il caso più generale di sostituzione di una parola strappata. Penso che questa domanda sia un po 'più specifica e non attiri le stesse risposte.
k0pernikus,

Protip: il 0registro conterrà l'ultimo testo strappato. :h quote0
Peter Rincker,

1
La stessa idea dalla risposta accettata della domanda menzionata può essere applicata qui. Con il cursore tra parentesi, premere semplicemente vi)p. È lo stesso di quella risposta, solo con l' i)oggetto di testo anziché l' woggetto di testo,
EvergreenTree

1
@ k0pernikus Temo che dovremo essere in disaccordo su quello. Per me, la parte importante di entrambe le domande è la sostituzione, e non l'oggetto di testo utilizzato per applicarla.
Rich

Risposte:


13

È possibile utilizzare la selezione visiva per selezionare il testo da sostituire, quindi incollarlo come segue:

vi(p

vi(seleziona Baz (perché racchiuso tra parentesi), pincolla Fnord su di esso.

Tuttavia, ciò porterà Baz al registro dopo l'incollaggio, che potrebbe non essere quello che desideri.


10

A meno che non si specifichi un registro, p(o P) verrà utilizzato l'ultimo registro che è stato compilato. Il registro senza nome ""contiene il testo cancellato o cancellato più di recente (a meno che non sia stato specificato un altro registro, ad esempio con "ay), ma questi vanno anche "0per gli yank o "1per le cancellazioni / modifiche. Vedi i registri .

Se l'ultimo testo è stato strappato con yè possibile incollarlo dal 0registro con "0P. Se è stato eliminato, è possibile accedervi con il 2registro con "2P( "1è ora Baz).

In alternativa, potresti evitare di fare confusione con i tuoi registri ed eliminare il registro blackhole"_ :

"_di(P

3

Se l'installazione di plug-in è un'opzione, è possibile utilizzare yankstack.vim . Quindi è possibile mantenere il flusso di lavoro corrente:

Attualmente, faccio spesso l'errore facendo:

  • di (aka "delete inside ()"
  • MAIUSC + P
  • Alt + p - ciclo allo yank precedente

1

Supponendo che "Fnord" sia nel registro, puoi farlo (con il cursore all'inizio della riga) f(ci(<c-r>a

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.