Vim, 22 , 18 keystrokes
O <esc>J:h r<cr>lyEZZ<C-v>{@"
เครดิตมากถึง@Udioicaสำหรับการค้นหาคำตอบที่น่าประทับใจที่ฉันได้รับ คำตอบนี้ไม่มีเครื่องหมายดอกจันใด ๆ โดยหวังว่าจะได้รับรางวัล
คำอธิบาย:
อินพุตถูกพิมพ์ก่อนส่วนที่เหลือของโปรแกรม Udioica คิดค้นเคล็ดลับสุดยอดนี้ขึ้นมา การพิมพ์<n>O <esc>
จะสร้างปิรามิดของช่องว่างและบรรทัดว่างหนึ่งบรรทัดตราบใดที่คุณ:set autoindent
เปิดใช้งาน ตัวเลือกนี้มาตามค่าเริ่มต้นใน vim 8 และ neovim แม้ว่าจะไม่ใช่ vim เวอร์ชั่นที่เก่ากว่า เนื่องจากสิ่งนี้ยังสร้างบรรทัดพิเศษเราจึงใช้J
ในการเข้าร่วมบรรทัดนี้กับบรรทัดถัดไปซึ่งมีประสิทธิภาพเพียงลบบรรทัดด้านล่างเราออก
ตอนนี้ถึงจุดนี้เราต้องแทนที่ช่องว่างเหล่านี้ทั้งหมดด้วยเครื่องหมายดอกจัน ถ้าฉันไม่กังวลเกี่ยวกับการใช้เครื่องหมายดอกจันในรหัสของฉันฉันจะเลือกสิ่งทั้งหมด<C-v>{
และประเภทr*
ทั้งหมดซึ่งจะแทนที่อักขระของการเลือกแต่ละตัวด้วยเครื่องหมายดอกจัน แต่ฉันทำอย่างนั้นไม่ได้
:h r
ดังนั้นเราจึงเปิดขึ้นหน้าความช่วยเหลือไป สิ่งที่น่าสนใจเกี่ยวกับสิ่งนี้คือในหน้าต่างเป็นกลุ่มหน้านี้จะแสดงเป็น:
r
r{char} Replace the character under the cursor with {char}.
...
ด้วยเคอร์เซอร์ที่ 'r' ตัวแรก อย่างไรก็ตามตัวไฟล์เองมีข้อความนี้:
*r*
r{char} Replace the character under the cursor with {char}.
...
ค่อนข้างสะดวก ดังนั้นเราจึงเลื่อนไปหนึ่งอักขระด้วยl
และดึงข้อความr*
ด้วยyE
([y] ank ไปที่ [E] nd ของคำนี้)
ZZ
หากต้องการปิดบัฟเฟอร์นี้เราจะใช้ทางลัดที่จะบันทึกไฟล์ @"
ตอนนี้เรามองเห็นช่องว่างของเราเลือกและใช้ข้อความกระชากเช่นถ้าเราได้พิมพ์มันด้วยการทำ สิ่งนี้ได้ผลเพราะ "@" เรียกใช้การลงทะเบียนต่อไปนี้เป็น vim-keystrokes และ "เป็นการลงทะเบียนเริ่มต้นสำหรับ yanking