Cerca nella cronologia degli annullamenti di Vim


5

Ho un modello di utilizzo "strano" in vim che uso spesso - o che devo usare, a seconda di come lo si visualizza.

Ciò che normalmente accade è questo: inserisco del testo, faccio delle modifiche, quindi rimuovo un po 'di testo. Qualche volta in futuro, immagino che questo pezzo di testo cancellato sarebbe di nuovo utile, quindi accade quanto segue:

  1. Annulla fino a quando il testo eliminato viene visualizzato nuovamente
  2. Inserisci il testo in un registro
  3. Ripeti la cronologia degli annullamenti fino a quando non tornerò alla versione "corrente"
  4. Incolla il testo strappato

Quello che mi sto chiedendo è questo: c'è un modo per cercare qualcosa nella cronologia degli annullamenti di un file, quindi non dovrò annullare dozzine (o centinaia) di annullamenti per ottenere la versione giusta?

Nota che non sto cercando esplicitamente un VCS "esterno" come Git o Subversion - Sto provando a cercare le modifiche prima di dover salvare un file sul disco.


1
Credo che ci sia un "mercato" per questo: accelerare il flusso di lavoro di trovare un cambiamento passato mediante ricerca abbattuta automatizzata piuttosto che ricerca lineare manuale: c.f. git log -p e git log -p -S 'regex_for_change'. Non sono a conoscenza di alcuna funzione vim (o funzionalità di Gundo) che ti permetta di indirizzare in modo specifico una parte delle differenze. Ad esempio, è molto facile aggiungere potenza a git log -p semplicemente usando la ricerca in less, ma questo non può essere fatto in Gundo.
Steven Lu

Ah, correzione: -S per git pickaxe cerca stringa, -G per git pickaxe cerca regex. Abbastanza potente.
Steven Lu

Nel Richiesta di funzione: ricerca nella cronologia degli annullamenti , l'autore del plugin Undo-tree ha suggerito un semplice algoritmo che potrebbe essere utilizzato per implementare questa funzionalità in Vim: loop until undo is not available { search "the string"; undo one step; }. Lo stato di annullamento è disponibile tramite Vim's undotree() funzione.
Rory O'Kane

Risposte:


-1

Sembra che quello che vuoi fare sia esattamente il caso d'uso Gundo .


1
I pericoli del multitasking: si inizia a digitare una risposta, quindi si ha a che fare con una "emergenza", si torna indietro e si finisce la risposta, si preme il pulsante e si nota che esiste già una risposta simile. Con un bellissimo screenshot.
romainl

1
Gundo è estremamente utile, ma c'è un modo semplice per farlo ricerca le varie versioni del file mostrato nell'albero di annullamento?
Kyle Strand

@KyleStrand, non penso che tu possa essere più granulare della funzione di diff di Gundo.
romainl

1
Non sto davvero chiedendo granularità, sto chiedendo capacità di ricerca. In particolare, mi piacerebbe la possibilità di inviare una query di ricerca che cercherebbe attraverso tutte le differenze mostrate da Gundo e visualizzare qualcosa come un elenco di tutte le versioni del file che hanno quel modello di ricerca nella loro diff. Superficialmente, questo sembra come la domanda originale qui sta chiedendo, ma dal momento che la tua risposta non risponde veramente alla mia ed è stata comunque "accettata", stavo pensando che dovrei semplicemente scrivere una nuova domanda.
Kyle Strand

3
Non intendo essere scortese, ma dato che entrambi conosciamo Gundo e nessuno dei due pensa che Gundo faccia quello che voglio, non sono sicuro del motivo per cui la tua risposta è "leggi la documentazione". Non sono nemmeno sicuro del perché tu pensi che io non hanno leggi la documentazione. Il punto è che la tua risposta semplicemente non risponde alla mia domanda.
Kyle Strand

0

Hai provato :history? Questo mostra il cronologia dei comandi (modificato ed enfatizzato dopo i commenti) registri attualmente disponibili. Vedere :help history in Vim per ulteriori informazioni.


Per i buffer della cronologia relativi all'input, vedere :h undo-redo (in particolare il :h :undolist sezione).

Vedi anche Come viene utilizzato l'albero di annullamento di Vim? (Così e Usando i rami di annullamento (Vim wiki).


Questa è la cronologia dei comandi, non la cronologia del file.
Dave Vogt

@DaveVogt: Così è, aggiornato la mia risposta con la sezione di aiuto corretta per la tua richiesta.
Daniel Andersson

Grazie per i link. Il secondo ha una risposta che punta a bitbucket.org/sjl/gundo.vim che è già bella vicino.
Dave Vogt
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.