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.
code-challenge
vim
maska bitowa
źródło
źródło
Odpowiedzi:
rujnuje wszystko bez cofania
źródło
:0,0 w
powinien napisać wiersze od 0 do 0, a:r
następnie przeczytać go ponownie (teraz pusty), tak naprawdę nie mam vima do przetestowania go: 0,0 w
zapisuje częściowy bufor, więc (mój) Vim nie chce go zapisać, muszę to powiedziećw!
zamiastw
. Jak dotąd tak dobrze, teraz:r
nie otwiera ponownie pliku. Zamiast tego musisz powiedzieć,:e
co 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”). Przynajmnieju
ndoing nie działa.Spowoduje to wyczyszczenie zawartości pliku i zapisanie go. Cofnięcie nie jest możliwe, ponieważ
undolevel
jest ustawione na liczbę ujemną, co wyłącza operację cofania.Edycja: Lepiej pisać
:g/^/d
zamiastggdG
, ponieważ w tym drugim przypadku możesz użyćp
(umieścić), aby cofnąć zmiany.źródło
ggdG
można zastąpić:%d
ggdG
tym, że można je odwrócić przez wstawienie (p
), więc:g/^/d
wydaje się nadal lepszą opcją :):%d_
jest krótszy niż:g/^/d
i rozwiązujeput
problem.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.
źródło
5 bajtów:
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.
źródło