คำถามติดแท็ก macro

มาโครคือการบันทึกคำสั่งที่พิมพ์ซึ่งสามารถเรียกใช้งานได้ในภายหลัง มาโครจะถูกเก็บไว้ในรีจิสเตอร์ การบันทึกมาโครสามารถทำได้ด้วย q และคุณสามารถเรียกใช้ด้วย @

2
ฉันจะดูและแก้ไขการบันทึกของฉัน (เช่นมาโครที่บันทึกไว้) ได้อย่างไร
ฉันใช้ซ้ำที่ซับซ้อนในการบันทึกการดำเนินงานของฉัน ( qqเพื่อบันทึกการดำเนินการบาง , qการหยุด) และฉันไม่ผิดพลาด เป็นไปได้ไหมที่จะเห็นสิ่งที่ฉันบันทึกและแก้ไขข้อผิดพลาดแทนที่จะทำอีกครั้ง? เรียกใช้ตัวละครที่บันทึกไว้ตาม@qผลงาน แต่ฉันไม่เห็นในการแม็พ ( :map q- No mapping found) :help recordingและมีข้อมูลไม่มากในการช่วยเหลือโดยการพิมพ์:

1
หลังจากกด qq บรรทัดสถานะจะแจ้งว่า“ กำลังบันทึก” ฉันจะออกจากโหมดนี้ได้อย่างไร
ฉันตั้งใจกดและตอนนี้บรรทัดสถานะกล่าวว่าqq recordingนั่นหมายความว่าอย่างไร? ฉันจะออกจากโหมด "การบันทึก" นี้ได้อย่างไร การกดEscไม่ทำงาน
23 macro 

8
วิธีเพิ่มหมายเลขบรรทัดถาวรในไฟล์ได้อย่างไร
ฉันมีไฟล์ข้อความเช่นนี้ (ใช้ gVim บน Windows) foo bar baz quux corge grault garply waldo fred plugh [...150 more lines...] xyzzy thud ฉันต้องการเพิ่มตัวเลขในแต่ละบรรทัดในไฟล์ ไม่ได้ใช้:set numberแต่เพิ่มหมายเลขเป็นข้อความนำหน้าแต่ละบรรทัดดังนี้ดังนั้นหมายเลขจึงเป็นส่วนหนึ่งของไฟล์ 1. foo bar baz quux 2. corge grault garply 3. waldo fred plugh [...~150 more lines...] 155. xyzzy thud

3
ฉันจะหยุดการบันทึกในบรรทัดคำสั่งได้อย่างไร
เมื่อฉันบันทึกแมโครด้วยqและฉันก็เสร็จฉันสามารถพิมพ์: q เพื่อหยุดการบันทึกถ้าฉันอยู่ในโหมดปกติหรือมองเห็น <c-o>q เพื่อหยุดการบันทึกถ้าฉันอยู่ในโหมดแทรก .. ฉันจะหยุดการบันทึกได้อย่างไรถ้าแมโครของฉันสิ้นสุดในโหมดคำสั่ง

2
สลับฟังก์ชันอาร์กิวเมนต์
เมื่อ refactoring code มันจะมีประโยชน์ที่จะสามารถแลกเปลี่ยนอากิวเมนต์ของฟังก์ชันได้ การเปลี่ยนเช่น: func(foo[0], bar(), baz.spam) เข้าไป func(baz.spam, foo[0], bar()) มีวิธีใดบ้างที่จะสลับอาร์กิวเมนต์ไปทางซ้าย / ขวาทำให้วงเล็บของฟังก์ชันและเครื่องหมายจุลภาคอยู่ในตำแหน่งหรือไม่? หมายเหตุสิ่งนี้อาจมีส่วนเกี่ยวข้องได้มากหากคุณต้องการพิจารณาข้อโต้แย้งที่ตัวเองเรียกใช้ฟังก์ชันด้วยข้อโต้แย้งของตัวเองเช่น: func(baz->spam, foo[0], bar(a, b, c))- การสนับสนุนกรณีเหล่านี้น่าจะเกี่ยวข้องกับการแยกวิเคราะห์ที่ครอบคลุมมากขึ้น
19 macro  refactor 

5
ฉันสามารถทำซ้ำแมโครด้วย“ ตัวดำเนินการ dot” ได้หรือไม่
ฉันสามารถทำซ้ำแมโครด้วย.คำสั่งได้หรือไม่ ตัวอย่างเช่นฉันต้องการพิมพ์: @q... และให้มีประสิทธิภาพการโทร@q4 ครั้ง ด้วยการทำงานเริ่มต้นนี้จะทำงานเฉพาะถ้า 'Q' ถือเป็นคำสั่งเดียวเช่นdw, หรือx iHello<esc>(สิ่งนี้สมเหตุสมผลเนื่องจาก '.' ซ้ำการเปลี่ยนแปลงครั้งสุดท้ายไม่ใช่การกดแป้น / คำสั่งสุดท้าย) ฉันชอบที่จะมีงานนี้ด้วยการนับ ตัวอย่างเช่นการพิมพ์: 3@q. จะมีประสิทธิภาพเช่นเดียวกับการทำงาน@q6 ครั้ง ฉันจะกำหนดค่าพฤติกรรมนี้ได้อย่างไร
15 macro  count 

1
บันทึกแมโครที่เพิ่งสร้างใน vimrc
บางครั้งฉันก็สร้างมาโคร บางครั้งฉันสร้างแมโครเดียวกันหลายครั้ง บางครั้งฉันก็เบื่อที่จะสร้างมาโครตัวเดิมซ้ำอีก ฉันสามารถเก็บมาโครได้หรือไม่ ฉันสามารถโหลดมาโครที่ตั้งไว้ล่วงหน้าได้หรือไม่ ฉันสามารถสร้างมาโครและบันทึกไว้ได้ตลอดไปหรือไม่
14 macro 

2
ฉันจะหยุดแมโครแบบเรียกซ้ำเมื่อสิ้นสุดบรรทัดได้อย่างไร
ฉันจะสร้างมาโครแบบเรียกซ้ำเพื่อให้ทำงานเฉพาะจนถึงจุดสิ้นสุดของบรรทัดได้อย่างไร หรือวิธีการเรียกใช้แมโครแบบเรียกซ้ำจนกระทั่งจบบรรทัดเท่านั้น
13 macro 

3
ฉันจะใช้ชุดการกดแป้นพิมพ์กับทุกคำที่เกิดขึ้นได้อย่างไร
หากฉันต้องการลบทุกคำนั่นเป็นเรื่องง่ายเพราะฉันจะทำสิ่งนี้: :s%/WORD//g แต่ถ้าฉันต้องการจะทำอะไรxyzกับ "WORD" ทุกครั้ง ตัวอย่างเช่นสมมติว่าฉันต้องการลบทุกบรรทัดที่มี "WORD" ฉันสามารถคิดถึงวิธีที่จะทำสิ่งนี้ได้สองสามอย่าง แต่ไม่มีวิธีใดที่เหมาะ 1) /WORD จากนั้นกดด้วยตนเองddnddnddnddn...จนกระทั่งไม่มีเหตุการณ์เกิดขึ้นอีก แต่นี่จะใช้เวลานานถ้ามีหลายบรรทัดในการทำเช่นนี้ 2) qd/WORD<enter>ddq และจากนั้นคาดเดาว่ามีคำกี่คำที่เกิดขึ้นจากนั้นเช่น: 500@d แต่สิ่งนี้จะทำให้ A) พลาดเส้นหนึ่งหรือ B) ลบเส้นพิเศษออก มีวิธีที่ดีกว่าในการทำเช่นนี้?
13 search  macro 

6
ลบรายการที่ซ้ำกันทั้งหมด
ฉันมีไฟล์ที่มีลักษณะเช่นนี้ Move to 230.00 Hold Hold Hold Hold Hold Hold Move to 00.00 Hold Hold Hold Hold Hold FooBar Hold Spam Hold ฉันอยากให้มันเป็นแบบนี้: Move to 230.00 Hold Move to 00.00 Hold FooBar Hold Spam Hold ฉันแน่ใจว่าจะต้องมีวิธีที่เป็นกลุ่มได้อย่างรวดเร็วสามารถทำเช่นนี้ แต่ฉันไม่สามารถห่อหัวของฉันได้อย่างไร สิ่งนี้เกินความสามารถของมาโครและต้องการ vimscript ไหม? นอกจากนี้ยังตกลงถ้าฉันต้องใช้แมโครเดียวกันกับแต่ละบล็อกของ "การพัก" ไม่จำเป็นต้องเป็นแมโครเดียวที่ได้รับทั้งไฟล์แม้ว่ามันจะยอดเยี่ยม

1
ปรับปรุงความเร็วการเล่นซ้ำของมาโครหรือไม่
ฉันบันทึกมาโครแบบง่ายและเล่นซ้ำในบรรทัดต่อไปนี้ แต่ดูเหมือนว่าความเร็วการเล่นซ้ำช้ามาก (จัดการน้อยบรรทัดต่อวินาที) นี่เป็นสิ่งที่คาดหวังและมีวิธีในการปรับปรุงความเร็วดังกล่าวหรือไม่?
13 macro 

2
ฉันจะเรียกใช้ฟังก์ชั่นหรือมาโครข้ามโฟลเดอร์ของไฟล์ได้อย่างไร?
StripWhitespaceสมมติว่าผมมีฟังก์ชั่นการตั้งชื่อ :StripWhitespaceฉันสามารถทำงานบนไฟล์เดียวโดยการเปิดไฟล์และทำงาน ฉันจะเรียกใช้ฟังก์ชั่นนั้นกับโฟลเดอร์ของไฟล์โดยอัตโนมัติและบันทึกผลลัพธ์เมื่อฉันไปได้อย่างไร

2
ฉันจะบันทึกแมโครที่ซ้อนกันได้อย่างไร
ฉันต้องการบันทึกแมโครภายในมาโครเช่น: qa [ first macro ... ] qb [ second macro ... ] q [ some more stuff, involving @b ... ] q อย่างไรก็ตามที่สองqถูกตีความเป็นการร้องขอให้หยุดแมโครแรกและที่เหลือถูกตีความว่าเป็นคำสั่ง มีวิธีใดบ้างในการเริ่มบันทึกแมโครที่สองภายในแมโคร ถ้าไม่มีมีวิธีอื่นอีกไหมที่จะได้รับผลตามที่ต้องการในการกดแป้นซ้ำตามลำดับในขณะที่อยู่ในแมโครอยู่แล้ว?
11 macro 

3
วิธีแทรกข้อความซ้ำ ๆ ที่มีความแตกต่างเล็กน้อยในกลุ่ม?
ฉันต้องการแทรกข้อความแบบนี้: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... ฉันรู้ว่าฉันสามารถวางข้อความได้หลายครั้งจากนั้นใช้การแทนที่เพื่อเปลี่ยนคำเดียวสำหรับแต่ละบรรทัด แต่ฉันก็ยังพบว่าวิธีนี้ไม่สะดวกมาก มีวิธีการบันทึกคำหรือรายการคำใน "ตัวแปร" แล้วใช้ตัวแปรนี้เพื่อสร้างข้อความที่คล้ายกัน? แก้ไขฉันทำสิ่งที่ไม่ชัดเจนในคำถามต้นฉบับจริง ๆ แล้วฉันพยายามทำให้ฟังก์ชั่นคำนิยามที่เหมือนกันดังนั้นwordA wordB... อาจปรากฏหลายครั้งในแต่ละโคลนของข้อความและข้อความอาจมีหลายบรรทัด รูปแบบเป็นเช่นนี้: similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (ข้อความอาจมีบรรทัดใหม่และ wordA, …

2
มีวิธีการตรวจสอบว่าฉันบันทึกใน vimscript หรือไม่?
มีอะไรที่เหมือนกันไหม eval("is_recording()") ฉันจะโทรหา vimscript ของฉันเพื่อดูว่าฉันกำลังบันทึกแมโครหรือไม่ ฉันจะคิดว่างานนี้: eval("mode(1)") แต่นั่นเพิ่งกลับ"n"มา ไม่แน่ใจว่ามันสำคัญหรือไม่ แต่ฉันใช้ neovim ดังนั้นถ้าเป็นพิเศษกับ neovim มันก็ใช้ได้

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