La séquence la plus destructrice de "mode oublié d'insertion" de Vim


10

Imaginez que vous avez un fichier texte arbitraire (que vous pouvez choisir).

Donnez la séquence de touches la plus destructrice (*) si elle était destinée à être insérée dans le texte, mais a été saisie à la place en mode normal (c'est i-à- dire / an'a pas été enfoncée). Vous ne pouvez pas entrer en mode visuel et ne pas quitter Vim.

Destructif est défini comme suit: Le ratio de caractères modifiés / supprimés par le nombre de frappes nécessaires.
Vous obtenez des points bonus si vos modifications ne peuvent pas être annulées par un nombre fixe d' uondes.


Exemple: fichier d'entrée sans saut de ligne. Séquence d' entrée: dfs.


La balise [code-golf] signifie que le moins de personnages gagne. Votre défi est plus compliqué que cela, j'ai donc changé le tag.
dmckee --- chaton ex-modérateur

Réponses:


3
: 0,0 w 
:r

ruine tout ne pas défaire


1
Je ne comprends pas comment ça gâche tout! lorsque j'exécute ce script, il duplique le contenu de mon fichier et l'annulation fonctionne correctement! pourriez-vous expliquer? Merci :)
saeedn

@saeedn :0,0 wdevrait écrire les lignes 0 à 0 et les relirait :r(maintenant vides), je n'ai pas vraiment de Vim pour le tester
Ratchet Freak

1
Eh bien, tout d'abord, : 0,0 wécrit un tampon partiel, donc (mon) Vim refuse de le sauvegarder, je dois dire à la w!place de w. Jusqu'ici tout va bien, maintenant :rne rouvre pas le fichier. Au lieu de cela, vous devez dire :equi lira le fichier du système de fichiers. Cependant, bien qu'avec ces modifications cela change le tampon, le tampon est loin d'être vide. Il contient la première ligne (car vous avez enregistré "0,0"). Au moins undoing ne fonctionne pas.
bitmask

3
:set ul=-1
ggdG
:w

Cela efface le contenu du fichier et l'enregistre. Aucune annulation n'est possible car elle undolevelest définie sur un nombre négatif, ce qui désactive l'opération d'annulation.

Edit: il vaut mieux écrire :g/^/dau lieu de ggdG, car dans ce dernier cas, vous pouvez utiliser p(put) pour annuler les modifications.


ggdGpourrait être remplacé par:%d
kenorb

@kenorb Oui, c'est plus court, mais il y a aussi le problème de ggdG, qui peut être inversé en mettant ( p), donc cela :g/^/dsemble toujours une meilleure option :)
saeedn

@saeedn :%d_est plus court que :g/^/det résout également le putproblème.
Rich

En outre, en dehors du contexte possible de la rédaction de cette réponse, je ne sais pas si quelqu'un pourrait accidentellement taper ces touches, pensant qu'il était en mode insertion. ;)
Rich

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Désactive l'annulation
  2. Supprime les caractères
  3. Lit 1G de données depuis / dev / urandom
  4. Sauvegarde

Contourner les règles, car j'ajoute des personnages (un personnage qui n'est pas là et qui est maintenant, signifie qu'un personnage a été changé). Je peux ajouter autant de caractères que je veux donc ce score est théoriquement infini.


0

5 octets:

:bd!

suivi d'une pression sur enter.

Supprime l'état actuel du fichier que vous modifiez de la mémoire, de sorte que toutes les modifications non enregistrées dans ce fichier sont perdues. Si vous avez d'autres fichiers ouverts, ils ne sont pas affectés. Cela ne quitte pas vim même si vous n'avez qu'un seul fichier ouvert.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.