Vim'deki bir satırdaki her kelimeyi tersine çevir


9

Göreviniz bir vim komut dosyası oluşturmak veya 140 yazdırılabilir ASCII karakterine (dosyanın herhangi bir yerinde, imleç satırın herhangi bir yerinden başlayarak) tek bir metin satırında çalışacak ve her alanı tersine çevirecek bir dizi tuş vuruşu sağlamak ve dizeleri aynı sırada tutarken cümle içinde ayrılmış dize.

Örneğin, giriş:

roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR  

dönmelidir:

For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR  

Bu sonuca ulaşmak için en az karaktere sahip komut dosyası veya en az tuşa basma sırası kazanır.


1
"Bu sorunun amaçları için sadece vim", normal bir kod golf mücadelesi yayınlamak ve sadece C'de cevap istemek gibi bir dil kısıtlaması gibi görünüyor ( Ve bu görüşle yalnız görünmüyorum. )
Martin Ender

27
RACECAR neden tersine çevrilmez?
orlp

3
Çünkü bu bir palindrom. Kendiniz geri alın.
Joe Z.

2
Vay be, ben aptalım. Derp.
orlp

7
@orlp Lol. Şaka yaptığınızı sanıyordum.
mbomb007

Yanıtlar:


9

28 25 24 tuş vuruşları

:se ri<CR>^qqct <C-r>"<Esc>f l@qq@q

Özyinelemeli makro, sanırım Ctrl- rbir tuş vuruşu olarak sayılır.

En zor kısmı, makronun aynı satırda kalmasını ve dosyanın geri kalanını yok etmemesini sağlamaktı.


Makroyu bitirmiyorsa, cEyerine kullanabilirsiniz ct . Ama olabilir kullanmak Wyerine f l2 vuruş kaydedin.
Caek

@Caek Yanlış x2. Tahmin cEedin imleç başındayken ne yapar a retcarahc-041? Ve tahmin Wedin çizginin sonuna geldiğimizde ne yapıyor?
orlp

Sermayeye dikkat edin E. küçük harf ekesik çizgiye, sermaye bir Esonraki boşluğa giderdi. Sadece onaylamak için denedim.
Caek

deneyin: :set ri<Enter>^qqct <C-r>"<Esc>W@qq@q23. için
Caek

@Caek Bu işe yaramayacak. Ve Ebunun ne işe yaradığını biliyorum. Bunu atıfta bulundu cE<C-r><Esc>açacak a retcarahc-041içine 140-character aAKA bu kelimeleri takas olur.
orlp

3

24 tuş vuruşu

ma:s/ /\r/g
V'a:!rev
gvJ

Ben bu soruyu çok eskidir biliyorum ama olamazdı bu yüzden vimgolf seviyorum değil sitede birkaç vim özgü zorlukları birinde bir yanıt gönder. Ayrıca bu çözüm Orlp'lerle bağlantılıdır.

Aynı Orlp'in dediği gibi, en zor kısım tamponun geri kalanının değiştirilmediğinden emin olmaktı. Bu kısıtlama olmasaydı, şunları yapabiliriz:

:s/ /\r/g
!{rev
V}J

(19 tuş vuruşu) ancak arabellek güvenliğini korumak için biraz daha fazlasına ihtiyacımız var. Bu bir unix ortamı olduğunu varsayar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.