2013-06-09 11 views
9

Sto cercando di migliorare l'usabilità della funzionalità Incolla in Vim perché troppe operazioni di eliminazione diverse (in realtà penso che siano tutte) verranno anche copiate nel buffer di incolla.Vim incollatura - scorrere il testo stracciato in precedenza

Ciò significa che non sono più in grado di eliminare parte del testo che voglio incollare da qualche parte, pulire qualcosa, e quindi la mia incolla da. Non so perché questo è l'ordine che preferisco fare le cose, ma non ho intenzione di cambiarlo.

Devo fare sostanzialmente la mossa "atomicamente" prima di tornare a fare il clean-up, altrimenti ottengo una pasta frustrante di virgola o parentesi o spazio. Oh, conosco il motivo per cui lo faccio nell'altro ordine. È semplicemente più efficiente. Non avrei dovuto spostarmi a destinazione, quindi restituire per pulire, quindi tornare indietro.

Come migliorare questo? Il mio suggerimento è un plugin che può essere usato per aumentare l'operazione di incolla dopo il fatto. premere p, vedere che ha incollato un carattere cancellato temporaneo inutile e, a questo punto (immediatamente dopo un'operazione di incolla), il nostro plug-in consentirà a un tasto di scorrere i registri cancellati in precedenza, aggiornando il nostro incolla sul posto.

In questo modo è possibile eliminare tutto ciò che desidero e in questo momento riuscirò a recuperare rapidamente qualsiasi elemento eliminato, purché si tratti di un segmento contiguo. Che è ovviamente facile da configurare con una selezione visiva seguita da una cancellazione. Ciò consente di specificare la specificità per facilità d'uso, poiché non è più necessario ricordare di specificare un registro specifico con nome da utilizzare per una determinata incisione.

In particolare, ci dovrebbe essere uno stack in cui si accumulano sia gli yanks che i eliminati, che verrà poi rapidamente spostato durante l'incollatura utilizzando un singolo bind.

C'è un plug-in che fa già questo?

+0

Ho letto questo 3 volte e non ho la domanda. Stai cercando su come utilizzare i registri per memorizzare testo diverso da incollare? –

+0

Hai usato un plugin come YouCompleteMe? Sto parlando di un plugin per aggiornare retroattivamente una "pasta errata" nella precedente nel buffer di riserva ** sul posto **. Cioè Ho premuto 'p',' "è stato inserito" 0.' Vorrei premere 'chiave plugin' per sostituire il' '0'' appena incollato con' "1', ecc. –

+0

No, quello era nuovo per me. mantenere il mio vim il più pulito possibile ... –

risposta

17

Sei un po 'confuso riguardo ai registri numerati (:h quote_number).

C'è un solo registro strattone e che è "0.

separata da che ci sono nove numerati registri di eliminazione "1 a "9. Questi sono riempiti come una coda con l'eliminazione più recente in alto.

Per i registri di eliminazione "1 a "9 Vim ha la funzionalità che si sta chiedendo costruito in: È possibile incollare "1p, e se non è quello che stai cercando è possibile ripetere u.u.u. per scorrere i registri "2, "3, "4, ecc., Finché non hai trovato quello giusto. Questo comportamento è documentato a :h redo-register.

Scorrendo testo precedentemente strappato è più spesso fatto con i plugin, quelli più popolari so di essere

  • YankRing.vim, "Mantiene una storia di Yanks precedenti, modifiche ed eliminazioni", e
  • yankstack , "implementazione leggera di kill ring di emacs per vim".
+0

Ehi, grazie per aver chiarito questo comportamento, è piuttosto difficile avere ragione senza che qualcuno lo spieghi in questo modo (anche con, mi ci sono voluti * diversi tentativi *). richiede di specificare '" 1p' prima che il punto funzioni, continuando sui registri, e come dici tu devi usare 'u'. Essendo la funzionalità di default, però, questo non è troppo terribile, anche se non è pratico per il mio uso perché dover digitare "" 1p' dopo che 'p' fallisce (il che significa che devo premere' u' too) sembra troppo ingombrante, se potente, il plug-in Yankstack è esattamente ciò che il medico ha ordinato. Grazie! –

5

Perché non utilizzare un registro denominato? Ad esempio, utilizzare "ay in yank per registrare a, quindi "ap per incollarlo nuovamente in seguito, e nel frattempo non verrà danneggiato da normali eliminazioni, ecc.

+0

Giusto. * I affrontato nella domanda. * Considera che questo è almeno sei sequenze di tasti aggiuntive, 'shift' +' ''+' a' due volte.Tutte le diverse chiavi.In un ordine specifico.Questo non sarà mai veloce.Gli yank sono già entrati in i registri con il nome numero, solo bisogno di un modo per scorrerli. –

3
[l]orem ipsum dolor sit amet 

    yiw yanks "lorem" in @" and @0 

lorem [i]psum dolor sit amet 

    daw deletes "ipsum " into @", @0 still contains "lorem" 

lorem dolor [s]it amet 

    ciwfoo deletes "sit" into @" and inserts "foo", @0 still contains "lorem" 

Perché registro 0 contiene ancora quello che uno strattone (lorem), anche dopo un sacco di c, d, s, facendo "0p sarà sempre pasta lorem fino a yank esplicitamente qualcos'altro.

Il mio esempio riguarda solo ciò che Vim chiama "cancellazione piccola" in modo che i registri numerati non vengano utilizzati; quando si eseguono operazioni di maggiori dimensioni, Vim utilizza anche i registri 1-9 ma non modifica il comportamento del registro 0 che sempre mantiene l'ultimo yank esplicito.

:h registers è una lettura buona e di facile comprensione: Vim ha molte funzionalità e i plugin non sono la risposta a tutto.

Inoltre, vedere this answer of mine suggerendo il registro del buco nero.

Problemi correlati