Vim, 22 , 18 penekanan tombol
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Penghargaan besar bagi @Udioica karena memberikan jawaban vim yang luar biasa yang saya kembangkan. Jawaban ini tidak mengandung tanda bintang, dengan harapan memenangkan hadiah.
Penjelasan:
Input diketik sebelum sisa program. Udioica datang dengan trik yang luar biasa ini. Mengetik <n>O <esc>
akan membuat piramida ruang dan satu baris kosong, selama Anda telah :set autoindent
mengaktifkannya. Opsi ini aktif secara default di vim 8 dan neovim, meskipun bukan versi vim yang lebih lama. Karena ini juga membuat garis tambahan, kami gunakan J
untuk bergabung dengan baris ini dengan yang berikutnya, yang secara efektif hanya menghapus garis di bawah kami.
Sekarang pada titik ini, kita perlu mengganti semua ruang ini dengan tanda bintang. Jika saya tidak khawatir tentang menggunakan tanda bintang dalam kode saya, saya hanya akan memilih semuanya secara visual <C-v>{
dan mengetik r*
, yang menggantikan setiap karakter pilihan dengan tanda bintang. Tetapi saya tidak bisa melakukan itu.
Jadi kami membuka halaman bantuan untuk :h r
. Hal yang menarik tentang ini adalah bahwa di vim-window, halaman ini ditampilkan sebagai:
r
r{char} Replace the character under the cursor with {char}.
...
Dengan kursor di 'r' pertama. Namun, file itu sendiri sebenarnya mengandung teks ini:
*r*
r{char} Replace the character under the cursor with {char}.
...
Cukup nyaman. Jadi kita memindahkan satu karakter dengan l
, dan menarik teks r*
dengan yE
([y] ank ke [E] dan kata ini).
Untuk menutup buffer ini, kami menggunakan pintasan untuk menyimpan file ZZ
. Sekarang, kami secara visual memilih spasi kami, dan menjalankan teks yang ditarik ke atas seolah-olah kami telah mengetiknya dengan melakukan @"
. Ini berfungsi karena "@" menjalankan register berikut sebagai vim-keystrokes, dan "adalah register default untuk mencabut.