Представьте, что у вас есть произвольный текстовый файл (который вы можете выбрать).
Дайте последовательность нажатий клавиш, которая является наиболее разрушительной (*), если она была предназначена для вставки в текст, но вместо этого была введена в обычном режиме (то есть i/ aне была нажата). Вы не можете войти в визуальный режим и не выйти из Vim.
Деструктивный определяется следующим образом: отношение количества измененных / удаленных символов к числу необходимых нажатий клавиш.
Вы получаете бонусные баллы, если ваши изменения не могут быть отменены фиксированным числом uопераций.
Пример: входной файл без разрывов строк. Входная последовательность: dfs.
code-challenge
vim
битовая
источник
источник
Ответы:
все разрушает
источник
:0,0 w
должен написать строки от 0 до 0 и:r
затем прочитать их (теперь пустые) обратно, хотя у меня нет никакого vim, чтобы проверить это: 0,0 w
пишет частичный буфер, поэтому (мой) Vim отказывается сохранять его, я должен сказать,w!
вместоw
. Пока все хорошо, сейчас:r
не открывается файл. Вместо этого вы должны сказать,:e
что будет читать в файле из файловой системы. Однако, хотя с этими модификациями он меняет буфер, буфер далеко не пуст. Он содержит первую строку (потому что вы сохранили «0,0»). По крайней мере,u
отмена не работает.Это очищает содержимое файла и сохраняет его. Отмена невозможна, потому что
undolevel
установлено отрицательное число, которое отключает операцию отмены.Редактировать: лучше писать
:g/^/d
вместоggdG
, потому что в последнем случае вы можете использоватьp
(положить) для отката изменений.источник
ggdG
можно заменить на:%d
ggdG
, которая может быть инвертирована с помощью put (p
), так что,:g/^/d
кажется, все еще лучший вариант :):%d_
короче,:g/^/d
а также решаетput
проблему.Изменение правил, потому что я добавляю символы (символ, которого нет и есть сейчас, означает, что символ был изменен). Я могу добавить столько символов, сколько захочу, так что эта оценка теоретически бесконечна.
источник
5 байтов:
с последующим нажатием Enter.
Выбрасывает текущее состояние редактируемого файла из памяти, поэтому все несохраненные изменения в этом файле теряются. Если у вас есть другие открытые файлы, они не затрагиваются. Это не завершает работу vim, даже если у вас открыт только один файл.
источник