Vim - ล้อมรอบบรรทัดความคิดเห็นพร้อมกับอักขระความคิดเห็น


27

วันนี้ฉันรู้ว่าฉันมักจะชอบกำหนดส่วนต่างๆในรหัสของฉันดังนี้:

####################
# Helper Functions #
####################

แต่มันน่าเบื่อที่จะทำ สมมติว่าฉันมีสายเช่นนี้:

# Helper Functions #

ชุดการvimกดแป้นที่สั้นที่สุดที่จะรวมไว้ใน#คืออะไร? การเลื่อนไม่ถือเป็นการกดแป้นในการท้าทายนี้

กรณีทดสอบ:

Input: "#test test test#"
Output:
################
#test test test#
################

Input: "#this is a nice block comment#"
Output:
##############################
#this is a nice block comment#
##############################

Input: "# s p a c e s must be supported a l s o#"
Output:
########################################
# s p a c e s must be supported a l s o#
########################################

3
ฉันลงคะแนนให้ปิดคำถามนี้เป็นหัวข้อนอกเพราะ "vim keystrokes" โดยทั่วไปหมายถึงการรันคำสั่งของ IDE เช่น Ctrl - C หรือ Ctrl - R ใน ST2 นี่ไม่ใช่การเข้ารหัสในรูปแบบใด ๆ
เครื่องมือเพิ่มประสิทธิภาพ

3
@Optimizer Vim เป็นภาษาที่สมบูรณ์แบบทัวริง (เช่นโดยใช้มาโคร) ด้วยการสร้างรหัสที่แตกต่างกันและวิธีการหลักสำหรับการแก้ไขจะขึ้นอยู่กับคำกริยา (การกระทำ) วัตถุ (การเคลื่อนไหว) มีเว็บเพจยอดนิยมสำหรับ vim golfing แล้ว: www.vimgolf.com (แต่ฉันเห็นด้วยว่าคำถามนี้น่าเบื่อมาก)
Hjulle

1
@Optimizer: มีไซต์ SE ที่เหมาะสมกว่าคำถามที่สามารถย้ายไปได้หรือไม่ ด้วยภาษาสคริปต์ / มาโครที่ครอบคลุมของกลุ่มบางคนอาจพิจารณาว่าเป็นภาษาในตัวเอง
shearn89

1
@ shearn89 ไม่เป็นมิตร? คุณกำลังพูดเรื่องอะไร PPCG เป็นเว็บไซต์นี้
เครื่องมือเพิ่มประสิทธิภาพ

2
เหตุใด IDE อื่น ๆ จึงไม่ได้รับอนุญาตด้วยหากคุณสามารถเขียนโปรแกรมในระบบมาโคร มันคืออะไรที่ทำให้มัน "ไม่เขียนโปรแกรม"?
Hjulle

คำตอบ:


40

11 8 7 การกดแป้น

YpVkr#p

Yp - duplicate current line, leaving the cursor at the lower of the two
V - enter visual line mode
k - go up and select both lines
r# - replace every selected character with #. Leaves visual mode and leaves cursor at the upper line.
p - put the yanked line (the original) on the next line.

(ขอบคุณลูกบิดประตูสำหรับการเตือน Y = yy)


3
แทนที่yyด้วยYเพื่อบันทึกอักขระ
Doorknob

2
ว้าวrคำสั่งนั้นทรงพลัง
justhalf

10

16 15 14 การกดแป้น

Yp
:s/./#/g
<cr>
YkP

วิธีการตรงไปข้างหน้า: ทำซ้ำบรรทัดแทนที่อักขระทั้งหมดด้วย #คัดลอกผลลัพธ์และวางไว้ด้านบน

ฉันกำลังนับPและ:กดแป้นพิมพ์หนึ่งครั้ง (แทนสองสำหรับShift+ pหรือShift+ ;) ที่ถูกกล่าวว่าคำถามที่ระบุให้นับ "คำสั่ง" ที่ฉันไม่แน่ใจว่าจะนับการทดแทน


ความคิดเห็นเช่นเดียวกับคำตอบของ @ rcrmn: แทนที่yyด้วยYเพื่อบันทึกอักขระ
Doorknob

ฉันเชื่อว่าจริงๆแล้วมันเป็น 14 การกดแป้นในขณะที่คุณต้องกด Intro เพื่อรันคำสั่งแทนที่
rorlork

@rcrmn โอ้จับได้ดี
Martin Ender
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.