La secuencia más destructiva de "olvido-para-ingresar-insertar-modo" en Vim

10

Imagina que tienes un archivo de texto arbitrario (que puedes elegir).

Proporcione la secuencia de pulsaciones de teclas que es más destructiva (*) si se pretendía insertar en el texto, pero en su lugar se ingresó en modo normal (es decir, i/ ano se presionó). No puede ingresar al modo visual y no salir de Vim.

Destructivo se define de la siguiente manera: la relación de caracteres modificados / eliminados por la cantidad de pulsaciones de teclas necesarias.
Obtiene puntos de bonificación si sus cambios no se pueden deshacer con un número fijo de undos.


Ejemplo: archivo de entrada sin saltos de línea. Secuencia de entrada: dfs.

máscara de bits
fuente
La etiqueta [code-golf] significa que gana menos caracteres. Tu desafío es más complicado que eso, así que he cambiado el etiquetado.
dmckee --- gatito ex moderador el

Respuestas:

3
: 0,0 w 
:r

arruina todo sin deshacer

monstruo de trinquete
fuente
1
¡No entiendo cómo arruina todo! ¡Cuando ejecuto este script, duplica el contenido de mi archivo y deshacer funciona bien! ¿Podrías explicar? Gracias :)
saeedn
@saeedn :0,0 wdebe escribir líneas 0 hasta 0 y :rentonces leerlo (ahora vacío) de nuevo, realmente no tengo una vim para probarlo aunque
trinquete monstruo
1
Bueno, antes que nada, : 0,0 wescribe un búfer parcial, por lo que (mi) Vim se niega a guardarlo, debo decir que en w!lugar dew . Hasta ahora todo bien, ahora :rno vuelve a abrir el archivo. En cambio, tiene que decir :ecuál leerá en el archivo del sistema de archivos. Sin embargo, aunque con estas modificaciones cambia el búfer, el búfer está lejos de estar vacío. Contiene la primera línea (porque guardó "0,0"). Al menos hacer undo no funciona.
máscara de bits
3
:set ul=-1
ggdG
:w

Esto borra el contenido del archivo y lo guarda. No es posible deshacer porque undolevelestá configurado en un número negativo, lo que desactiva la operación de deshacer.

Editar: es mejor escribir en :g/^/dlugar de hacerlo ggdG, porque en este último caso puede usar p(poner) para revertir los cambios.

saeedn
fuente
ggdGpodría sustituirse por:%d
kenorb
@kenorb Sí, eso es más corto, pero también tiene el problema de ggdGque se puede invertir poniendo ( p), por lo que :g/^/dparece una mejor opción :)
saeedn
@saeedn :%d_es más corto que :g/^/dy también resuelve el putproblema.
Rico
Además, fuera del contexto posible de escribir esta respuesta, no estoy seguro de si alguien escribiría accidentalmente esas teclas, pensando que estaban en modo de inserción. ;)
Rich
2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Deshabilita deshacer
  2. Elimina caracteres
  3. Lee 1G de datos de / dev / urandom
  4. Ahorra

Doblar las reglas, porque estoy agregando caracteres (un carácter que no está allí y ahora lo está, significa que se cambió un personaje). Puedo agregar tantos caracteres como quiera para que esta puntuación sea teóricamente infinita.

Nejc
fuente
0

5 bytes:

:bd!

seguido de una pulsación de enter.

Desecha el estado actual del archivo que está editando de la memoria, por lo que se pierden todos los cambios no guardados en ese archivo. Si tiene otros archivos abiertos, no se verán afectados. Esto no cierra vim incluso si solo tiene un archivo abierto.

b_jonas
fuente