Urutan “lupa-untuk-masuk-masukkan-mode” paling merusak di Vim

10

Berpura-puralah Anda memiliki file teks sewenang-wenang (yang dapat Anda pilih).

Berikan urutan penekanan tombol yang paling merusak (*) jika dimaksudkan untuk dimasukkan ke teks, tetapi dimasukkan dalam mode normal (yaitu i/ atidak ditekan). Anda mungkin tidak memasuki mode visual dan tidak keluar dari Vim.

Destructive didefinisikan sebagai berikut: Rasio karakter yang diubah / dihapus dengan jumlah penekanan tombol yang diperlukan.
Anda mendapatkan poin bonus jika perubahan Anda tidak dapat diurungkan dengan jumlah tetap undos.


Contoh: Input file tanpa jeda baris. Urutan input: dfs.

bitmask
sumber
Tag [kode-golf] berarti karakter yang paling sedikit menang. Tantangan Anda lebih rumit dari itu, jadi saya telah mengubah pemberian tag.
dmckee --- ex-moderator kitten

Jawaban:

3
: 0,0 w 
:r

hancurkan semuanya, jangan batalkan

aneh ratchet
sumber
1
Saya tidak mengerti bagaimana itu menghancurkan segalanya! ketika saya menjalankan skrip ini, duplikat konten file saya dan membatalkan berfungsi dengan baik! bisakah kamu menjelaskan? Terima kasih :)
saeedn
@saeedn :0,0 wharus menulis baris 0 hingga 0 dan :rkemudian membacanya (sekarang kosong) kembali, saya tidak benar-benar memiliki vim untuk mengujinya sekalipun
ratchet freak
1
Yah, pertama-tama, : 0,0 wmenulis buffer parsial, jadi (saya) Vim menolak untuk menyimpannya, saya harus mengatakan w!sebaliknya w. Sejauh ini bagus, sekarang :rtidak membuka kembali file. Sebagai gantinya, Anda harus mengatakan :eyang akan membaca dalam file dari sistem file. Namun, meskipun dengan modifikasi ini mengubah buffer, buffer jauh dari kosong. Ini berisi baris pertama (karena Anda menyimpan "0,0"). Setidaknya undoing tidak berfungsi.
bitmask
3
:set ul=-1
ggdG
:w

Ini membersihkan isi file dan menyimpannya. Tidak ada pembatalan dimungkinkan karena undoleveldiatur ke angka negatif, yang menonaktifkan operasi pembatalan.

Sunting: Lebih baik menulis :g/^/ddaripada ggdG, karena dalam kasus terakhir Anda dapat menggunakan p(menempatkan) untuk memutar kembali perubahan.

Saeedn
sumber
ggdGbisa diganti dengan:%d
kenorb
@kenorb Ya, itu lebih pendek, tetapi juga memiliki masalah ggdG, yang dapat dibalik dengan menempatkan ( p), jadi :g/^/dsepertinya masih pilihan yang lebih baik :)
saeedn
@saeedn :%d_lebih pendek dari :g/^/ddan juga memecahkan putmasalah.
Rich
Selain itu, di luar kemungkinan konteks penulisan jawaban ini, saya tidak yakin apakah ada orang yang secara tidak sengaja mengetik penekanan tombol itu, mengira mereka berada dalam mode penyisipan. ;)
Rich
2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Nonaktifkan membatalkan
  2. Menghapus karakter
  3. Membaca 1G data dari / dev / urandom
  4. Menghemat

Membengkokkan aturan, karena saya menambahkan karakter (karakter yang tidak ada dan sekarang ada, berarti karakter diubah). Saya dapat menambahkan karakter sebanyak yang saya inginkan sehingga skor ini secara teoritis tidak terbatas.

Nejc
sumber
0

5 byte:

:bd!

diikuti oleh tekan enter.

Membuang status file yang sedang Anda edit dari memori saat ini, sehingga semua perubahan yang belum disimpan dalam file tersebut hilang. Jika Anda memiliki file lain terbuka, mereka tidak terpengaruh. Ini tidak berhenti vim bahkan jika Anda hanya memiliki satu file terbuka.

b_jonas
sumber