Come sostituire una parola con una parola strappata in modalità normale


25

Quando devo sostituire una parola con un'altra che ho tirato prima, di solito uso un flusso di lavoro che mi sembra innaturale:

Diciamo che ho questo testo:

foo bar buzz

E voglio strappare fooe sostituire barcon quello che ho strappato prima.

Dopo lo strappo foo, vedo le seguenti opzioni:

opzione 1

  1. Posiziona il cursore su barconw

  2. Metti foodi fronte a barconP

  3. Posiziona il cursore su bquello rimanente bared elimina la parola conde

opzione 2

  1. Posiziona il cursore sulla barra con w

  2. Utilizzare deper cancellarebar

  3. Metti il ​​contenuto del registro 0 con "0P(da quando ho cancellato bar, foonon è più accessibile con un semplice p)

Entrambi i modi mi sembrano complicati e sono sicuro che esiste un modo più efficiente per realizzare questa azione, ma non riesco a trovare il modo. Questa idea sarebbe quella di combinare le azioni delete e put in una sola, o almeno evitare di mantenere la parola cancellata nel registro yank in modo che io possa mettere la parola desiderata con una semplice p.

Inoltre conosco la modalità di sostituzione attivata, Rma non consente di inserire ciò che è stato strappato.

TL; DR : come sostituire una parola con il contenuto del registro yank?

Risposte:


31

Supponendo che hai già uno strattone foocon yeo qualcosa di simile, e che il cursore si trova da qualche parte su foo, è possibile utilizzare Wvep:

  • Wandare a bar(questo è ovviamente facoltativo e dipenderà dalla posizione corrente del cursore);
  • v per avviare la modalità visiva;
  • eper andare alla fine della parola (puoi anche usare altri movimenti qui, come iw);
  • pincollare foo; questo sostituirà l'attuale selezione visiva (che viene inserita nel registro senza nome "").


6

Ho trovato un altro modo per farlo, è un po 'simile all'opzione 2 ma ha il vantaggio di non rovinare lo stato dei registri.

L'idea è quella di utilizzare il " registro del buco nero ": questo registro è accessibile tramite "_e ha la particolarità che puoi scriverlo ma non leggerlo da esso, quindi come un buco nero questo registro fa sparire totalmente tutto ciò che vi entra. Qui possiamo usarlo in modo che foorimanga nel registro yank anche dopo la barcancellazione.

Con questa soluzione il worflow dopo lo strappo foosarebbe:

  • Andare a barcon W(o qualsiasi parola necessaria ovviamente)
  • Utilizzando il "registro buco nero" per eliminare barcon"_de
  • Mettere foodal registro yank con P. Il registro yank contiene ancora da fooquando è barandato nel buco nero.

Non sono sicuro che sia una soluzione migliore di quella di @ Carpersmoker ( in termini di vimgolf @Carpetsmoker vince ) ma non sapevo del registro del buco nero e pensavo che qualcuno potesse essere interessato a saperlo.


3
  1. Vai all'inizio di "pippo". Press yiw. Ciò strappa la parola interiore.

  2. Vai a "barra" premendo la lettera w. Quindi selezionalo e torna indietro:viw"0p

Io uso ciwe yiwmolto.


4
L'uso di oggetti di testo come iwè interessante, ma la tua soluzione è in realtà la stessa di quella di @ CarpetSmoker: selezionare visivamente la seconda parola e inserire la prima. Penso anche che la tua soluzione funzionerebbe con un semplice pinvece di usare "0register.
statox

1
  • Quando il cursore si trova in un punto qualsiasi della parola,

    • yiw- strappare la parola e salvarla nel 0registro.
  • Vai alla parola target da sostituire

    • ciw cancellerà la parola e ti metterà in modalità inserimento.
    • ctrl-r. Un "pop-up che chiede il registro ad essere invocate.
    • 0 incollerà la parola strappata.

Le parole strappate sono (normalmente!) Memorizzate nel 0registro. Vedere :registersper visualizzare i buffer memorizzati. Può sembrare una procedura lunga, IMHO apre le porte a trucchi di registro molto più sofisticati.

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.