Votre tâche consiste à créer un script vim ou à fournir une séquence de touches qui fonctionnera sur une seule ligne de texte avec jusqu'à 140 caractères ASCII imprimables (n'importe où dans un fichier, avec le curseur commençant n'importe où sur la ligne) et inversez chaque espace - chaîne séparée dans la phrase tout en gardant les chaînes dans le même ordre.
Par exemple, l'entrée:
roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR
devrait retourner:
For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR
Le script avec le moins de caractères ou la séquence du moins de touches pour atteindre ce résultat est le gagnant.
Réponses:
282524 touchesMacro récursive, je suppose que Ctrl- rcompte comme une frappe.
Le plus difficile a été de s'assurer que la macro reste sur la même ligne et ne détruit pas le reste du fichier.
la source
cE
place dect
, si cela ne met pas fin à la macro. Mais vous pouvez utiliserW
au lieu def l
pour enregistrer 2 coups.cE
faire lorsque le curseur est au début dea retcarahc-041
? Et devinez quoiW
faire quand nous sommes à la fin de la ligne?E
. les minusculese
iraient jusqu'au tiret, les majusculesE
iraient jusqu'au prochain espace. Je viens de l'essayer pour confirmer.:set ri<Enter>^qqct <C-r>"<Esc>W@qq@q
pour 23.E
, je sais ce que cela fait. Je faisais allusion à ce quicE<C-r><Esc>
se transformeraita retcarahc-041
en140-character a
, AKA cela échangerait les mots.24 touches
Je sais que cette question est très ancienne, mais j'aime vimgolf, donc je ne pouvais pas ne pas poster de réponse sur l'un des rares défis spécifiques à vim sur le site. De plus, cette solution est liée à celle d'Orlp.
Tout comme Orlp l'a dit, la partie la plus difficile était de s'assurer que le reste du tampon n'était pas modifié. Sans cette restriction, nous pourrions simplement faire:
(19 frappes) mais nous avons besoin d'un peu plus pour le garder en sécurité. Cela suppose un environnement Unix.
la source