Najbardziej niszczycielska sekwencja „zapomnienia o wejściu w tryb wstawiania” w Vimie


10

Udawaj, że masz dowolny plik tekstowy (który możesz wybrać).

Podaj sekwencję naciśnięć klawiszy, która jest najbardziej destrukcyjna (*), jeśli miała być wstawiona do tekstu, ale zamiast tego została wprowadzona w trybie normalnym (tj. i/ aNie został naciśnięty). Nie możesz wejść w tryb wizualny i nie opuścić Vima.

Niszczycielski jest zdefiniowany w następujący sposób: Stosunek zmienionych / usuniętych znaków do liczby niezbędnych naciśnięć klawiszy.
Dostajesz punkty bonusowe, jeśli twoich zmian nie można cofnąć o określoną liczbę unieudanych prób.


Przykład: Plik wejściowy bez podziałów linii. Sekwencja wejściowa: dfs.


Tag [code-golf] oznacza, że ​​najmniej znaków wygrywa. Twoje wyzwanie jest bardziej skomplikowane, więc zmieniłem oznaczanie.
dmckee --- były moderator kociak

Odpowiedzi:


3
: 0,0 w 
:r

rujnuje wszystko bez cofania


1
Nie rozumiem, jak to wszystko rujnuje! kiedy uruchamiam ten skrypt, kopiuje zawartość mojego pliku i cofanie działa dobrze! czy możesz wytłumaczyć? Dzięki :)
saeedn

@saeedn :0,0 wpowinien napisać wiersze od 0 do 0, a :rnastępnie przeczytać go ponownie (teraz pusty), tak naprawdę nie mam vima do przetestowania go
ratchet maniak

1
Po pierwsze, : 0,0 wzapisuje częściowy bufor, więc (mój) Vim nie chce go zapisać, muszę to powiedzieć w!zamiast w. Jak dotąd tak dobrze, teraz :rnie otwiera ponownie pliku. Zamiast tego musisz powiedzieć, :eco będzie czytać w pliku z systemu plików. Jednak chociaż przy tych modyfikacjach zmienia bufor, bufor jest daleki od pustego. Zawiera pierwszy wiersz (ponieważ zapisałeś „0,0”). Przynajmniej undoing nie działa.
maska ​​bitowa

3
:set ul=-1
ggdG
:w

Spowoduje to wyczyszczenie zawartości pliku i zapisanie go. Cofnięcie nie jest możliwe, ponieważ undoleveljest ustawione na liczbę ujemną, co wyłącza operację cofania.

Edycja: Lepiej pisać :g/^/dzamiast ggdG, ponieważ w tym drugim przypadku możesz użyć p(umieścić), aby cofnąć zmiany.


ggdGmożna zastąpić:%d
kenorb,

@kenorb Tak, to jest krótsze, ale ma też problem polegający na ggdGtym, że można je odwrócić przez wstawienie ( p), więc :g/^/dwydaje się nadal lepszą opcją :)
saeedn

@saeedn :%d_jest krótszy niż :g/^/di rozwiązuje putproblem.
Rich

Poza tym, poza możliwym kontekstem napisania tej odpowiedzi, nie jestem pewien, czy ktoś przypadkowo wpisałby te naciśnięcia klawiszy, sądząc, że były w trybie wstawiania. ;)
Rich

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Wyłącza cofanie
  2. Usuwa znaki
  3. Odczytuje 1G danych z / dev / urandom
  4. Oszczędza

Zginanie zasad, ponieważ dodaję postacie (postać, której nie ma, a teraz jest, oznacza, że ​​postać została zmieniona). Mogę dodać tyle znaków, ile chcę, więc wynik jest teoretycznie nieskończony.


0

5 bajtów:

:bd!

a następnie naciśnij klawisz Enter.

Zrzuca bieżący stan edytowanego pliku z pamięci, więc wszystkie niezapisane zmiany w tym pliku zostaną utracone. Jeśli masz otwarte inne pliki, nie ma to wpływu. To nie kończy vima, nawet jeśli masz tylko jeden plik otwarty.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.