Vim'deki en yıkıcı “girmeyi unutmayı unuttum” modu


10

Rastgele bir metin dosyanız olduğunu varsayalım (seçebileceğiniz gibi).

Metne eklenmesi amaçlanmış ancak bunun yerine normal moda (yani i/ abasılmamış) girilmişse, en yıkıcı (*) tuş vuruşlarının sırasını verin . Görsel moda giremez ve Vim'den çıkamazsınız.

Yıkıcı aşağıdaki gibi tanımlanır: Değiştirilen / silinen karakterlerin gerekli tuş vuruşlarının sayısına oranı.
Değişiklikleriniz sabit sayıda undos tarafından geri alınamazsa bonus puan alırsınız.


Örnek: Satır sonu olmayan girdi dosyası. Girdi dizisi dfs.


[Code-golf] etiketi en az sayıda karakterin kazanacağı anlamına gelir. Sizin meydan okuma bundan daha karmaşık, bu yüzden etiketleme değiştirdim.
dmckee --- eski moderatör yavru kedi

Yanıtlar:


3
: 0,0 w 
:r

her şeyi mahveder geri al


1
Her şeyi nasıl mahvettiğini anlamıyorum! Bu komut dosyasını çalıştırdığımda dosyamın içeriğini çoğaltır ve geri alır iyi çalışır! açıklayabilir misin Teşekkürler :)
saeedn

@saeedn :0,0 w0 ile 0 satırları yazmalı ve :rsonra tekrar okur (şimdi boş), gerçekten test etmek için bir vimim yok
cırcır ucube

1
Her şeyden önce, : 0,0 wkısmi bir tampon yazıyor, bu yüzden (benim) Vim onu ​​kaydetmeyi reddediyor, w!yerine söylemeliyim w. Şimdiye kadar iyi, şimdi :rdosyayı yeniden açmıyor. Bunun yerine, :edosyada hangisinin dosya sisteminden okunacağını söylemelisiniz . Bununla birlikte, bu modifikasyonlarla tamponu değiştirmesine rağmen, tampon boş olmaktan uzaktır. İlk satırı içerir ("0,0" kaydettiğiniz için). En azından geri ualma çalışmıyor.
Bitmask

3
:set ul=-1
ggdG
:w

Bu dosyanın içeriğini temizler ve kaydeder. Geri alma mümkün değildir undolevel, çünkü geri alma işlemini devre dışı bırakan negatif bir sayıya ayarlanır.

Düzenleme: Bunun :g/^/dyerine yazmak daha iyidir ggdG, çünkü ikinci durumda pdeğişiklikleri geri almak için (put) kullanabilirsiniz .


ggdGdeğiştirilebilir:%d
kenorb

@kenorb Evet, bu daha kısa, ama aynı zamanda ggdG( p) koyarak tersine çevrilebilir sorunu var , bu yüzden :g/^/dhala daha iyi bir seçenek gibi görünüyor :)
01'de satıldı

@saeedn sorunu :%d_daha kısadır :g/^/dve putsorunu çözer .
Zengin

Ayrıca, bu cevabı yazmanın olası bağlamının dışında, herhangi birinin yanlışlıkla bu tuş vuruşlarını yazıp yazma modunda olduğunu düşünüp düşünmeyeceğinden emin değilim. ;)
Zengin

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Geri almayı devre dışı bırakır
  2. Karakterleri siler
  3. / Dev / urandom'dan 1G veri okur
  4. kaydeder

Kuralları büküyorum, çünkü karakter ekliyorum (orada olmayan ve şu anda olan bir karakter, bir karakterin değiştiği anlamına geliyor). İstediğim kadar karakter ekleyebilirim, bu yüzden bu puan teorik olarak sonsuz.


0

5 bayt:

:bd!

ardından enter tuşuna basın.

Düzenlediğiniz dosyanın geçerli durumunu bellekten atar, böylece o dosyadaki kaydedilmemiş tüm değişiklikler kaybolur. Açık olan başka dosyalarınız varsa, bunlar etkilenmez. Açık olan tek bir dosya olsa bile vim'den çıkmaz.

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.