Vim, 22 , 18 tổ hợp phím
O <esc>J:h r<cr>lyEZZ<C-v>{@"
Khoản tín dụng lớn cho @Udioica khi đưa ra câu trả lời vim tuyệt vời mà tôi đã mở rộng. Câu trả lời này không chứa bất kỳ dấu sao nào, với hy vọng giành được tiền thưởng.
Giải trình:
Đầu vào được gõ trước phần còn lại của chương trình. Udioica đã đưa ra thủ thuật tuyệt vời này. Gõ <n>O <esc>
sẽ tạo ra một kim tự tháp của không gian và một dòng trống, miễn là bạn đã :set autoindent
bật. Tùy chọn này được bật theo mặc định trong vim 8 và neovim, mặc dù không phải là phiên bản cũ hơn của vim. Vì điều này cũng tạo ra một dòng bổ sung, chúng tôi sử dụng J
để tham gia dòng này với dòng tiếp theo, điều này thực sự chỉ loại bỏ dòng bên dưới chúng tôi.
Bây giờ tại thời điểm này, chúng ta cần thay thế tất cả các không gian này bằng dấu hoa thị. Nếu tôi không lo lắng về việc sử dụng dấu hoa thị trong mã của mình, tôi sẽ chỉ chọn trực quan toàn bộ <C-v>{
và loại r*
, thay thế từng ký tự của vùng chọn bằng dấu hoa thị. Nhưng tôi không thể làm điều đó.
Vì vậy, chúng tôi mở ra các trang trợ giúp :h r
. Điều thú vị về điều này là trong cửa sổ vim, trang này được hiển thị dưới dạng:
r
r{char} Replace the character under the cursor with {char}.
...
Với con trỏ trên 'r' đầu tiên. Tuy nhiên, bản thân tệp thực sự chứa văn bản này:
*r*
r{char} Replace the character under the cursor with {char}.
...
Khá tiện lợi. Vì vậy, chúng tôi di chuyển qua một ký tự l
và kéo văn bản r*
bằng yE
([y] ank đến [E] nd của từ này).
Để đóng bộ đệm này, chúng tôi sử dụng phím tắt để lưu tệp ZZ
. Bây giờ, chúng tôi trực quan chọn không gian của mình và chạy văn bản được kéo dài như thể chúng tôi đã gõ nó bằng cách thực hiện @"
. Điều này hoạt động vì "@" chạy thanh ghi sau dưới dạng vim-keystrokes và "là thanh ghi mặc định cho việc kéo dài.