A sequência mais destrutiva de “esqueci de entrar no modo de inserção” no Vim


10

Finja que você tem um arquivo de texto arbitrário (que você pode escolher).

Dê a sequência de pressionamentos de tecla que é mais destrutiva (*) se foi planejada para ser inserida no texto, mas foi inserida no modo normal (ou seja, i/ anão foi pressionado). Você não pode entrar no modo visual e não sair do Vim.

Destrutivo é definido da seguinte forma: A proporção de caracteres alterados / excluídos pelo número de pressionamentos de tecla necessários.
Você ganha pontos de bônus se suas alterações não puderem ser desfeitas por um número fixo de undos.


Exemplo: arquivo de entrada sem quebras de linha. Sequência de entrada: dfs.


A tag [code-golf] significa menos caracteres vencidos. Seu desafio é mais complicado que isso, então mudei a marcação.
dmckee --- gatinho ex-moderador

Respostas:


3
: 0,0 w 
:r

arruina tudo sem desfazer


11
Eu não entendo como isso estraga tudo! quando executo esse script, ele duplica o conteúdo do meu arquivo e o desfazer funciona bem! você poderia explicar? Obrigado :)
saeedn

@saeedn :0,0 wdeve escrever linhas 0-0 e :rentão lê-lo (agora vazia) de volta, eu realmente não tenho uma vim para testá-lo embora
catraca aberração

11
Bem, antes de tudo, : 0,0 wescreve um buffer parcial, então (o meu) Vim se recusa a salvá-lo, devo dizer em w!vez de w. Até agora tudo bem, agora :rnão reabre o arquivo. Em vez disso, você deve dizer o :eque será lido no arquivo do sistema de arquivos. No entanto, embora com essas modificações ele mude o buffer, ele está longe de estar vazio. Ele contém a primeira linha (porque você salvou "0,0"). Pelo menos unão fazer não funciona.
bitmask

3
:set ul=-1
ggdG
:w

Isso limpa o conteúdo do arquivo e o salva. Não é possível desfazer porqueundolevel está definido como um número negativo, o que desativa a operação de desfazer.

Editar: é melhor escrever em :g/^/dvez de ggdG, porque no último caso, você pode usar p(colocar) para reverter as alterações.


ggdGpode ser substituído por:%d
kenorb 25/10/2015

@kenorb Sim, isso é mais curto, mas também tem o problema de ggdG, que pode ser invertida, colocando ( p), de modo que :g/^/dainda parece uma opção melhor :)
saeedn

@saeedn :%d_é mais curto que :g/^/de também resolve o putproblema.
Rich Rich

Além disso, fora do contexto possível de escrever esta resposta, não tenho certeza se alguém digitará acidentalmente essas teclas, pensando que estava no modo de inserção. ;)
Rich

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Desativa desfazer
  2. Exclui caracteres
  3. Lê 1G de dados de / dev / urandom
  4. Economizar

Dobrar as regras, porque estou adicionando caracteres (um caractere que não existe e agora existe, significa que um caractere foi alterado). Eu posso adicionar quantos caracteres eu quiser, então essa pontuação é teoricamente infinita.


0

5 bytes:

:bd!

seguido de uma pressão de enter.

Joga fora o estado atual do arquivo que você está editando da memória, para que todas as alterações não salvas nesse arquivo sejam perdidas. Se você tiver outros arquivos abertos, eles não serão afetados. Isso não fecha o vim, mesmo se você tiver apenas um arquivo aberto.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.