Sequenza "distruttiva per inserire-inserire-modalità" più distruttiva in Vim


10

Fai finta di avere un file di testo arbitrario (che puoi scegliere).

Fornire la sequenza di tasti più distruttiva (*) se si intendeva inserire il testo, ma invece è stato inserito in modalità normale (ovvero i/ anon è stato premuto). Non è possibile accedere alla modalità visiva e non chiudere Vim.

Il distruttivo è definito come segue: il rapporto tra i caratteri modificati / cancellati e il numero di sequenze di tasti necessarie.
Ottieni punti bonus se le tue modifiche non possono essere annullate da un numero fisso di undos.


Esempio: file di input senza interruzioni di riga. Sequenza di ingresso: dfs.


Il tag [code-golf] significa che vince il minor numero di caratteri. La tua sfida è più complicata di così, quindi ho cambiato il tagging.
dmckee --- ex gattino moderatore,

Risposte:


3
: 0,0 w 
:r

rovina tutto senza rovinare


1
Non capisco come rovini tutto! quando eseguo questo script duplica il contenuto del mio file e annulla funziona bene! potresti spiegare? Grazie :)
Saeedn,

@saeedn :0,0 wdovrebbe scrivere le righe da 0 a 0 e :rpoi lo rileggerebbe (ora vuoto), non ho davvero un vim per testarlo
maniaco del cricchetto

1
Bene, prima di tutto, : 0,0 wscrive un buffer parziale, quindi (mio) Vim rifiuta di salvarlo, devo dire w!invece di w. Fin qui tutto bene, ora :rnon riapre il file. Invece, devi dire :eche leggerà nel file dal filesystem. Tuttavia, sebbene con queste modifiche cambi il buffer, il buffer è tutt'altro che vuoto. Contiene la prima riga (perché hai salvato "0,0"). Almeno il undoing non funziona.
maschera di bit dal

3
:set ul=-1
ggdG
:w

Questo cancella il contenuto del file e lo salva. Non è possibile annullare poiché undolevelè impostato su un numero negativo, che disabilita l'operazione di annullamento.

Modifica: è meglio scrivere :g/^/dinvece di ggdG, perché in quest'ultimo caso è possibile utilizzare p(put) per ripristinare le modifiche.


ggdGpotrebbe essere sostituito da:%d
Kenorb,

@kenorb Sì, è più breve, ma ha anche il problema di ggdG, che può essere invertito mettendo ( p), quindi :g/^/dsembra ancora un'opzione migliore :)
Saeedn

@saeedn :%d_è più breve di :g/^/de risolve anche il putproblema.
Rich

Inoltre, al di fuori del possibile contesto di scrittura di questa risposta, non sono sicuro che qualcuno avrebbe mai digitato accidentalmente quei tasti, pensando che fossero in modalità insert. ;)
Rich

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Disabilita Annulla
  2. Elimina i caratteri
  3. Legge 1G di dati da / dev / urandom
  4. Salva

Piegare le regole, perché sto aggiungendo personaggi (un personaggio che non è lì e ora lo è, significa che un personaggio è stato cambiato). Posso aggiungere tutti i personaggi che voglio, quindi questo punteggio è teoricamente infinito.


0

5 byte:

:bd!

seguito da una pressione di invio.

Elimina lo stato corrente del file che stai modificando dalla memoria, quindi tutte le modifiche non salvate in quel file vanno perse. Se hai altri file aperti, non sono interessati. Questo non chiude vim anche se hai solo un file aperto.

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.