Ваша задача - создать скрипт vim или предоставить последовательность нажатий клавиш, которая будет работать с одной строкой текста, содержащей до 140 печатных символов ASCII (в любом месте файла, с курсором, начинающимся в любом месте строки), и реверсировать каждый пробел. разделенная строка в предложении, сохраняя строки в том же порядке.
Например, вход:
roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR
должен вернуть:
For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR
Сценарий с наименьшим количеством символов или последовательность наименьших нажатий клавиш для достижения этого результата является победителем.
Ответы:
282524 нажатия клавишРекурсивный макрос, я предполагаю, что Ctrl- rсчитается одним нажатием клавиши.
Самым сложным было убедиться, что макрос остается в одной строке и не разрушает остальную часть файла.
источник
cE
вместоct
, если это не заканчивается макрос. Но вы можете использоватьW
вместо того,f l
чтобы сохранить 2 ударов.cE
происходит, когда курсор находится в началеa retcarahc-041
? И угадайте, чтоW
делать, когда мы в конце строки?E
. строчные буквыe
будут идти до тире, прописные -E
до следующего пробела. Я просто попытался это подтвердить.:set ri<Enter>^qqct <C-r>"<Esc>W@qq@q
за 23.E
, я знаю, что он делает. Я имел в виду, чтоcE<C-r><Esc>
это превратитсяa retcarahc-041
в140-character a
, ака это поменяет слова.24 нажатия клавиш
Я знаю, что этот вопрос очень старый, но я люблю vimgolf, поэтому я не мог не опубликовать ответ на одну из немногих специфических для vim задач на сайте. Плюс это решение связано с Orlp.
Как сказал Орлп, самой сложной задачей было убедиться, что оставшаяся часть буфера не изменена. Если бы не это ограничение, мы могли бы просто сделать:
(19 нажатий клавиш), но нам нужно немного больше, чтобы сохранить его в буфере. Это предполагает среду Unix.
источник