ในคู่มือที่ครอบคลุมนี้ ผมจะอธิบายวิธีแมปคีย์ใน Vim เพื่อให้การดำเนินการเป็นแบบอัตโนมัติ ตั้งแต่การสร้างคีย์แมปพื้นฐานไปจนถึงการแมปคีย์ขั้นสูง ตลอดจนกระบวนการทำให้คีย์แมปเป็นแบบถาวรและลบออก
- ไวยากรณ์
- ข้อโต้แย้งพิเศษเป็นกลุ่ม
- การสร้างคีย์แมปพื้นฐาน
- การแสดงรายการคีย์แมป
- ทำให้คีย์แมปเป็นแบบถาวร
- หลีกเลี่ยงการเรียกซ้ำ
- การสร้างคีย์แมปเฉพาะโหมด
- วิธีการแมปเหตุการณ์เมาส์
- วิธีทำแผนที่ด้วย Leader Key ในกลุ่ม
- วิธีการแมปฟังก์ชัน Vimscript
- วิธีแมปคำสั่งภายนอกใน Vim
- วิธีลบ Keymap ใน Vim
- แผ่นโกงการทำแผนที่ Vim Key
- บทสรุป
ไวยากรณ์
ในการแมปคีย์ใน Vim จะใช้ไวยากรณ์ต่อไปนี้:
<โหมด>แผนที่ <อาร์กิวเมนต์>
ในไวยากรณ์ข้างต้น:
<โหมด>แผนที่ | nmap, imap, vmap, xmap, cmap หรือ omap |
<ข้อโต้แย้ง>* | <เงียบ>, <บัฟเฟอร์>, <สคริปต์>, <พิเศษ>, |
|
ด้านซ้ายมือประกอบด้วยคีย์หรือชุดคีย์ที่จะแมป |
|
ทางด้านขวามือประกอบด้วยชุดของปุ่มหรือคำสั่งที่จะดำเนินการโดยปุ่มด้านซ้ายมือ |
โดยพื้นฐานแล้ว
*ในรูปแบบข้างต้น ส่วน
ข้อโต้แย้งพิเศษเป็นกลุ่ม
อาร์กิวเมนต์พิเศษของ Vim คือแท็กที่ใช้เพื่อเพิ่มฟังก์ชันการทำงานให้กับคีย์แมป อาร์กิวเมนต์เหล่านี้ปรากฏหลังคำสั่ง :map และก่อน {rhs} และ {lhs}
ตัวอย่างเช่น หากต้องการสร้างบัฟเฟอร์แผนที่โดยเฉพาะ ให้ใช้อาร์กิวเมนต์พิเศษในลักษณะต่อไปนี้:
:แผนที่ < กันชน > < ซีเอ > ggVG<เงียบ> | เพื่อระงับข้อความสะท้อนจากคีย์แมป |
<บัฟเฟอร์> | เพื่อทำให้บัฟเฟอร์แผนที่เฉพาะ (ไม่ซ้ำกับบัฟเฟอร์ปัจจุบัน) |
<สคริปต์> | เพื่อระบุว่าแผนที่เป็นส่วนหนึ่งของสคริปต์หรือปลั๊กอิน |
<พิเศษ> | *ใช้เพื่อกำหนดคีย์พิเศษสำหรับการแมปโดยใช้สัญลักษณ์ <> (ปุ่มฟังก์ชัน, ปุ่มควบคุม, Shift และปุ่มอื่นๆ ที่ไม่ใช่ตัวอักษร) |
<อธิบาย> | แสดงว่าด้านซ้ายมือของแผนที่เป็นนิพจน์และจะต้องได้รับการประเมินเพื่อให้ได้ด้านขวามือ |
<ไม่ซ้ำกัน> | เพื่อทำให้แผนที่มีเอกลักษณ์เฉพาะของแผนที่ระดับท้องถิ่นและระดับโลก |
<ขณะนี้> | เพื่อข้ามการรออักขระคำสั่งถัดไปในแผนที่ |
สัญลักษณ์คีย์พิเศษของ Vim มีการกล่าวถึงในภาพต่อไปนี้
ตัวอย่างเช่น หากคุณต้องการใช้แป้นเว้นวรรคในการแมปคีย์ ระบบจะใช้สัญลักษณ์
การสร้างคีย์แมปพื้นฐานใน Vim
มาทำความเข้าใจการแมปคีย์ Vim ด้วยตัวอย่างพื้นฐาน ฉันต้องการแมปคำสั่งเลือกทุกบรรทัด ( ggVG ) ถึง Ctrl+ก กุญแจ ในการแมปคีย์ ctrl+a ฉันจะรันคำสั่งต่อไปนี้ใน Vim
:แผนที่ < ซีเอ > ggVGที่นี่, <ค-ก> หมายถึง Ctrl และ ก กุญแจในขณะที่ ggVG เป็นคำสั่งให้เลือกทุกบรรทัดในไฟล์ ที่ :แผนที่ คำหลักใช้สำหรับการทำแผนที่โหมดปกติโดยค่าเริ่มต้น อย่างไรก็ตาม :nmap ยังสามารถนำมาใช้อย่างชัดเจนสำหรับ ปกติ โหมด.
ในทำนองเดียวกัน เพื่อแมปฟังก์ชันการสลับหมายเลขบรรทัดด้วย F1 การใช้งานที่สำคัญ:
:แผนที่ < F1 > : กำหนดหมายเลข !ตอนนี้เมื่อคุณกดปุ่ม F1 หมายเลขบรรทัดจะถูกเปิดใช้งาน และการกดอีกครั้งจะเป็นการปิดใช้งาน
โปรดทราบว่าเมธอดนี้จะแมปคีย์ในบัฟเฟอร์ปัจจุบันเท่านั้น และจะถูกลบออกเมื่อปิดบัฟเฟอร์
การแสดงรายการคีย์แมป
หากต้องการแสดงรายการการแมปคีย์ทั้งหมดของโหมดปกติ ภาพ และโหมดรอดำเนินการของตัวดำเนินการ ให้ใช้คำสั่ง :map
:แผนที่เพื่อแสดงรายการการแมปที่สำคัญของ แทรก และ บรรทัดคำสั่ง โหมด ให้ใช้ :map! สั่งการ.
:แผนที่ !หากต้องการแสดงรายการการแมปคีย์ของโหมดเฉพาะ เพียงพิมพ์ตัวอักษรเริ่มต้นของโหมดก่อนคีย์เวิร์ดแผนที่
:nmap | เพื่อแสดงแผนที่ของโหมดปกติ |
:imap | เพื่อแสดงแผนที่ของโหมดแทรก |
:vmap | เพื่อแสดงแผนที่ของภาพและเลือกโหมด |
:smap | เพื่อแสดงแผนที่ของโหมดเลือก |
:xmap | เพื่อแสดงแผนที่ของโหมดภาพ |
:cmap | เพื่อแสดงแผนที่ของโหมดบรรทัดคำสั่ง |
:omap | เพื่อแสดงแผนที่ของผู้ปฏิบัติงานในโหมดที่รอดำเนินการ |
นอกจากนี้ หากต้องการแสดงรายการแผนที่ทั้งหมดรวมถึงแผนที่ปลั๊กอินพร้อมเส้นทาง ให้ใช้ :แผนที่แบบละเอียด สั่งการ.
:แผนที่แบบละเอียดสำหรับคีย์เฉพาะ เพียงระบุคีย์ในคำสั่ง ( :แผนที่รายละเอียด <คีย์> ).
ทำให้คีย์แมปเป็นแบบถาวร
คีย์แมปที่กล่าวถึงในส่วนด้านบนจะแมปคีย์ในบัฟเฟอร์ปัจจุบันเท่านั้น หากต้องการทำให้การแมปคีย์ Vim เป็นแบบถาวร ต้องวางแมปไว้ในไฟล์ vimrc
โปรดทราบว่าในขณะที่วางคีย์แมปใน vimrc ไฟล์ อย่าเพิ่มโคลอน (:) นำหน้า แผนที่ สั่งการ.
หลังจากวางคีย์แมปลงในไฟล์ vimrc บันทึกและออกโดยใช้คำสั่ง :wq หรือใช้ปุ่ม shift+zz คีย์แมปที่วางอยู่ใน vimrc ไฟล์จะเป็นแบบโกลบอลและสามารถใช้ได้ในทุกเซสชัน Vim อย่างไรก็ตาม คีย์แมปบางตัวสามารถปิดใช้งานได้ชั่วคราวหากส่งผลต่องานในเซสชันปัจจุบัน โปรดดูวิธีลบคีย์แมปใน Vim ด้านล่าง
ที่ vimrc เป็นไฟล์การตั้งค่าของ Vim ที่มีคำสั่งและการตั้งค่าต่างๆ มันมีอยู่ใน /usr/share/เป็นกลุ่ม/ ไดเร็กทอรีบน macOS และ /etc/กลุ่ม บนลินุกซ์ เป็นสิ่งสำคัญที่จะต้องทราบว่า vimrc ไฟล์ในไดเร็กทอรีดังกล่าวเป็นไฟล์เฉพาะระบบ คุณสามารถแก้ไขไฟล์เหล่านี้สำหรับการแมปคีย์ได้เช่นกัน แต่ฉันขอแนะนำให้สร้างไฟล์เฉพาะผู้ใช้ vimrc ไฟล์ในโฮมไดเร็กตอรี่
หลีกเลี่ยงการเรียกซ้ำ
ก่อนที่จะก้าวไปข้างหน้า สิ่งสำคัญคือต้องเรียนรู้เกี่ยวกับการเรียกซ้ำในการแมปคีย์ Vim ข้อเสียและวิธีป้องกัน สามารถเข้าใจได้โดยใช้ตัวอย่าง
:แผนที่ วว 3jddในตัวอย่างข้างต้น ฉันได้แมปไฟล์ วว ปุ่มเพื่อเลื่อนลง 3 บรรทัดและลบบรรทัดใต้เคอร์เซอร์ ตอนนี้เมื่อฉันกดปุ่ม วว มันจะพยายามรันแผนที่ 3jdd . เป็นกลุ่มจะตีความ วว คำสั่งเป็นแผนที่และรันแผนที่ซ้ำๆ ดังแสดงในรูปต่อไปนี้
บันทึก : การเรียกซ้ำสามารถหยุดตัวแก้ไข Vim ได้ หากต้องการยกเลิกการแช่แข็ง ให้กด Ctrl+ค กุญแจ
เพื่อหลีกเลี่ยงการเรียกซ้ำ ให้แทนที่ แผนที่ คำหลักด้วย นอร์แมป , ที่ไหน ' ไม่มีอะไร ' วิธี ไม่เรียกซ้ำ . ฉันจะแทนที่ แผนที่ คำหลักด้วย นอร์แมป เพื่อแก้ไขการเรียกซ้ำในคีย์แมปด้านบน
:noremap วว 3jddฉันจะแนะนำให้ใช้ นอร์แมป แทน แผนที่ เพื่อหลีกเลี่ยงการสร้างการแมปแบบเรียกซ้ำโดยไม่ได้ตั้งใจ
การสร้างคีย์แมปเฉพาะโหมด
Vim ทำให้การแมปคีย์มีความหลากหลายมากจนสามารถสร้างคีย์แมปของโหมดเฉพาะได้อย่างง่ายดาย ตัวอย่างเช่น หากคุณได้สร้างคีย์แมปสำหรับโหมดแทรกโดยใช้ไฟล์ F1 คีย์ จากนั้นคุณสามารถแมปเดียวกันได้ F1 เข้าสู่โหมดอื่นเพื่อการดำเนินการใหม่ทั้งหมด
ในตัวอย่างต่อไปนี้ ฉันได้แมปไฟล์ F1 ปุ่มลบ 3 บรรทัดใน ปกติ โหมดและดึง 3 บรรทัดใน แทรก โหมด.
:nmap < F1 > 3ด:imap < F1 > < ซี-ที >
แผนที่แรกจะลบสามบรรทัดในโหมดปกติเมื่อกดปุ่ม F1 ในขณะที่แผนที่ที่สองจะเพิ่มการเยื้องหนึ่งบรรทัดในบรรทัดปัจจุบันเมื่ออยู่ในโหมดแทรกโดยใช้ปุ่มเดียวกัน ตอนนี้เรามาทำความเข้าใจการทำแผนที่ในแต่ละโหมดกันดีกว่า
การทำแผนที่โหมดปกติ
หากต้องการใช้แผนที่ในโหมดปกติ ให้ใช้เท่านั้น nmap คำสำคัญ. เช่น หากต้องการคัดลอกบรรทัดทั้งหมดในไฟล์โดยใช้ Ctrl+ค คีย์ฉันจะใช้คำสั่งต่อไปนี้
:nmap < ซี-ซี > ggVGyตามที่กล่าวไว้ข้างต้น แนวทางปฏิบัติที่ดีที่สุดคือใช้วิธีการแบบไม่เรียกซ้ำเพื่อแมปคีย์ ดังนั้น ฉันจะแทนที่ nmap กับ โนร์แมป คำสำคัญ.
:nnoremap < ซี-ซี > ggVGyวางไว้โดยไม่มีเครื่องหมายโคลอน (:) ใน vimrc ไฟล์เพื่อทำให้เป็นคีย์แมปถาวร
ฉันจะใช้ นอร์แมป แทน แผนที่ ในตัวอย่างต่อไปนี้
แทรกการแมปโหมด
หากต้องการแมปคีย์สำหรับโหมดแทรก เพียงใช้ ฉัน แทน n . ตัวอย่างเช่น ในโหมดแทรก Ctrl+P และ Ctrl+n ปุ่มที่ใช้ในการเติมคำอัตโนมัติตามการจับคู่แบบย้อนกลับและไปข้างหน้าตามลำดับ เพื่อทำแผนที่ Ctrl+P ด้วยปุ่ม Tab ฉันจะใช้คำสั่งต่อไปนี้
:inoremap < แท็บ > < ซี-พี >ที่สำคัญถ้าคุณต้องการทำแผนที่ ตัวดำเนินการอยู่ในโหมดรอดำเนินการ คำสั่งใน โหมดแทรก จากนั้นคุณจะต้องใส่ไฟล์ <เอสซี> ปุ่มทางด้านขวามือเพื่อออกจากโหมดแทรกเพื่อรันคำสั่งเหล่านั้น ตัวอย่างเช่น ในคีย์แมปต่อไปนี้ ฉันต้องการลบ 3 บรรทัดโดยใช้ Ctrl+x ปุ่มแล้วเข้าสู่โหมดแทรกอีกครั้ง
:inoremap < ซี-เอ็กซ์ > 3ดีดีตอนนี้เมื่อฉันกดปุ่ม Ctrl+x ปุ่มก็จะพิมพ์ 3ดีดี คำสั่งแทนการดำเนินการ
เพื่อแก้ไขฉันจะใส่ <เอสซี> ก่อน 3ดีดี สั่งการ.
:inoremap < ซี-เอ็กซ์ > < Esc > 3ดีดีตอนนี้คำสั่งจะดำเนินการให้ฉันอยู่ในโหมดแทรก
แล็ปท็อปขนาดเล็กหลายเครื่องยังขาดคุณสมบัติดังกล่าว Esc ซึ่งเป็นสิ่งสำคัญในการออกจากโหมดปัจจุบัน ดังนั้นเพื่อทำแผนที่ Esc ปุ่มเพื่อออกจากโหมดแทรก สามารถใช้การแมปคีย์ได้ ในตัวอย่างต่อไปนี้ ฉันกำลังใช้ อดีต ปุ่มเพื่อออกจากโหมดปกติ
:inoremap เช่น < Esc >เมื่อคุณกดอย่างรวดเร็ว อดีต ปุ่มจะออกจากโหมดแทรก จึงเข้าสู่โหมดปกติ
การทำแผนที่โหมดภาพ
โหมดภาพเป็นโหมดที่สำคัญมากสำหรับการเลือกข้อความในตัวแก้ไข Vim นอกเหนือจากการเลือกพื้นฐานแล้ว โหมดภาพยังมีโหมดอื่นๆ ที่แตกต่างกัน เช่น เส้นภาพ และโหมดบล็อกภาพ
ในโหมดภาพ เครื่องหมายตัวหนอน (~) ใช้เพื่อสลับกรณี หากต้องการใช้เครื่องหมายทิลเดอ (~) คุณต้องกดสองปุ่ม (กะ+~) . ในตัวอย่างต่อไปนี้ ฉันกำลังแมปคีย์ c โหมดภาพ เพื่อเลือกคำใต้เคอร์เซอร์และเปลี่ยนตัวพิมพ์
:vnoremap c iw~ตอนนี้ให้กด v เพื่อเข้าสู่โหมดภาพและกดปุ่ม c เพื่อสลับคำใต้เคอร์เซอร์ดังที่แสดงใน GIF ต่อไปนี้
การแมปโหมดบรรทัดคำสั่ง
คำสั่งที่จำเป็นจำนวนมากของ Vim ทำงานในโหมดบรรทัดคำสั่งเท่านั้น เช่น การบันทึกไฟล์ :ใน คำสั่งถูกใช้ในทำนองเดียวกันเพื่อบันทึกและออก :wq มีการใช้คำสั่ง แท็บและการดำเนินการแยกทั้งหมดจะทำในโหมดบรรทัดคำสั่งด้วย ตัวอย่างเช่น ในการสร้างแท็บใหม่ : ลูกน้อง มีการใช้คำสั่ง หากต้องการสร้างแท็บอย่างรวดเร็ว Ctrl+t กุญแจก็พอแล้ว
:cnoremap < ซี-ที > เรื่อง < CR >ตอนนี้ให้กดเครื่องหมายโคลอน (:) เพื่อเข้าสู่โหมดบรรทัดคำสั่งแล้ว Ctrl+t เพื่อเปิดแท็บใหม่ มันเร็วกว่าการพิมพ์ทั้งหมดมาก เรื่อง คำสั่งและ กลับ สำคัญ.
การสร้างคำสั่งแบบกำหนดเองเป็นกลุ่ม
การเข้าสู่โหมดคำสั่งเพื่อดำเนินการแผนที่ดูเหมือนจะมีประโยชน์น้อยลง แต่คุณสามารถสร้างคำสั่งที่กำหนดเองของคุณเองใน Vim ได้โดยใช้ไฟล์ :สั่งการ ตัวเลือก. คุณลักษณะนี้ค่อนข้างคล้ายกับการแมปคีย์ Vim ตัวอย่างเช่น หากต้องการสร้างคำสั่งด่วนเพื่อตั้งค่าหมายเลขบรรทัดและความกว้างของข้อความเป็น 80 ให้ใช้คำสั่งต่อไปนี้
ตอนนี้เข้าสู่โหมดคำสั่งและดำเนินการ :Mycmd สั่งการ.
ผู้ดำเนินการแมปโหมดที่รอดำเนินการ
โหมดรอดำเนินการของตัวดำเนินการคือโหมดที่ Vim รอคำสั่งการเคลื่อนไหวหลังจากกดปุ่มตัวดำเนินการ ตัวดำเนินการทั่วไปคือ y, d และ c ตัวอย่างเช่น หากต้องการลบบรรทัดปัจจุบันและ 3 บรรทัดต่อไปนี้ คุณจะต้องใช้ตัวดำเนินการ d ด้วย 3จ การเคลื่อนไหว (d3j) คุณไม่สามารถกดปุ่มเหล่านี้พร้อมกันได้เพื่อให้บรรลุการทำงานที่ต้องการ
โดยทั่วไปโหมดนี้จะใช้เพื่อทำแผนที่การเคลื่อนไหว เรามาแมปการเคลื่อนไหวที่จะเลือกเส้นปัจจุบันและอีก 3 เส้นตามด้วย
:onoremap < F2 > 3จตอนนี้เพื่อดึงบรรทัดปัจจุบันและ 3 บรรทัดตามด้วยให้ใช้ theF2 คีย์ในลักษณะเดียวกัน ง ยังสามารถประยุกต์ใช้โอเปอเรเตอร์ได้อีกด้วย
สิ่งสำคัญอีกประการหนึ่งที่ต้องจำไว้คือ หากคุณเพิ่มการนับให้กับการเคลื่อนไหวที่แมปที่กล่าวถึงข้างต้น สมมติว่า 2
วิธีการแมปเหตุการณ์เมาส์
แม้ว่า Vim จะเป็นโปรแกรมแก้ไขข้อความที่เน้นแป้นพิมพ์ที่ปรับแต่งได้อย่างเต็มที่ แต่ความพร้อมใช้งานของฟังก์ชันเมาส์ทำให้ดียิ่งขึ้นไปอีก นอกเหนือจากปุ่มบนคีย์บอร์ดปกติแล้ว กิจกรรมเมาส์ทั้งหมดยังสามารถแมปใน Vim ได้อีกด้วย ตัวอย่างเช่น หากคุณต้องการแมปการดับเบิลคลิกทางขวาและการดับเบิลคลิกซ้ายเพื่อข้ามเครื่องหมายไปข้างหน้าและข้างหลังตามลำดับ ให้ใช้การแมปต่อไปนี้
:noremap < 2 -เมาส์ขวา > ] `:noremap < 2 -เมาส์ซ้าย > [ `
เหตุการณ์เมาส์อื่นๆ ที่สามารถแมปได้แสดงไว้ในตารางต่อไปนี้
<เมาส์ซ้าย> | <ปล่อยซ้าย> | <ลากซ้าย> | <2-เมาส์ซ้าย> | |
<เมาส์ขวา> | <ปล่อยทางขวา> | <ลากขวา> | <2-เมาส์ขวา> | |
<เมาส์กลาง> | <รุ่นกลาง> | <มิดเดิลแดร็ก> | <3-เมาส์ซ้าย> | |
<3-เมาส์ขวา> | |
|||
<4-เมาส์ซ้าย> | |
|||
<4-เมาส์ขวา> | |
วิธีทำแผนที่ด้วย Leader Key ในกลุ่ม
การแมป Vim จะไม่สมบูรณ์หากไม่มีคีย์ผู้นำ คีย์ผู้นำคือคีย์เริ่มต้นที่สามารถใช้เพื่อแมปคีย์ แม้ว่าคีย์เหล่านั้นจะถูกแมปเพื่อทำงานอื่นๆ ก็ตาม ตัวอย่างเช่น หากคุณได้แมปไฟล์ ง คีย์เพื่อลบบรรทัดทั้งหมด จากนั้นเราสามารถแมปคีย์เดียวกันเพื่อลบเพียง 5 บรรทัดโดยใช้คีย์ผู้นำ
สำหรับผู้ที่ไม่มีความคุ้นเคยกับคีย์ผู้นำ Vim เป็นคีย์ที่ขึ้นต้นด้วยคีย์อื่นหรือชุดคีย์อื่นสำหรับคำสั่งการแมปหรือการดำเนินการ รหัสผู้นำเริ่มต้นของ Vim คือแบ็กสแลช (\) แต่สามารถปรับแต่งได้
ตัวอย่างเช่น วว คำสั่งใช้ในการลบบรรทัดใต้เคอร์เซอร์ หากคุณต้องการทำแผนที่ วว คำสั่งให้ลบบรรทัดทั้งหมดในไฟล์ จากนั้นคุณสามารถใช้ปุ่มผู้นำได้
:noremap < ผู้นำ > วว ggVGdตอนนี้เมื่อใดก็ตามที่คุณกดปุ่ม \วว ที่สำคัญ ทุกบรรทัดในไฟล์จะถูกลบ คุณสามารถระบุคุณลักษณะของปุ่มผู้นำ Vim เป็นปุ่มควบคุมบน Windows หรือปุ่มคำสั่งใน macOS
วิธีการแมปฟังก์ชัน Vimscript
โปรแกรมแก้ไข Vim ไม่ได้จำกัดอยู่เพียงคำสั่งหรือการดำเนินการเท่านั้น มีภาษาการเขียนโปรแกรมทั้งหมดรอบ ๆ Vim เพื่อสร้างฟังก์ชันการทำงานแบบกำหนดเองที่เรียกว่า Vimscript คุณสามารถสร้างสคริปต์หรือฟังก์ชันและแมปเข้ากับคีย์ได้อย่างง่ายดาย ตัวอย่างเช่น เรามาสร้างฟังก์ชันที่จะเปิดใช้งานการตั้งค่าต่างๆ เช่น หมายเลขบรรทัด ฟังก์ชันการทำงานของเมาส์ และความกว้างของข้อความ
การทำงาน การตั้งค่าของฉัน ( )ชุด ตัวเลข
ชุด หนู =ก
ชุด ความกว้างของข้อความ = 80
ฟังก์ชั่นสุดท้าย
วางฟังก์ชันนี้ไว้ในไฟล์ vimrc
มาแมปฟังก์ชันนี้กับผู้นำและปุ่ม s กัน ฉันจะใช้
:noremap < ผู้นำ > s : เรียกการตั้งค่าของฉัน ( ) < CR >ตอนนี้เมื่อใดก็ตามที่คุณกดปุ่ม \s คีย์ฟังก์ชันจะถูกเรียกใช้และฟังก์ชันใดๆ ภายในฟังก์ชันจะดำเนินการ
บันทึก : ตัวอักษรตัวแรกของชื่อฟังก์ชันควรเป็นตัวพิมพ์ใหญ่เสมอในขณะที่สร้างฟังก์ชันแบบกำหนดเองใน Vim
วิธีแมปคำสั่งภายนอกใน Vim
คำสั่งภายนอกสามารถแมปใน Vim ได้ คำสั่งภายนอกหมายถึงคำสั่ง Linux หรือ Unix ตัวอย่างเช่น หากคุณต้องการแมปภายนอก เรียงลำดับ คำสั่งเพื่อเรียงลำดับบรรทัดทั้งหมดในบัฟเฟอร์ปัจจุบันเป็น F1 ที่สำคัญให้ใช้คำสั่งต่อไปนี้
:noremap < F1 > : : %! เรียงลำดับ < CR >ในทำนองเดียวกัน หากคุณกำลังเขียนไฟล์สคริปต์และทำให้สามารถเรียกใช้งานได้โดยไม่ต้องออกจากเซสชัน Vim คุณสามารถใช้ โครโมด สั่งการภายใน. ตัวอย่างเช่น หากต้องการให้ไฟล์ปัจจุบันสามารถเรียกใช้งานได้ คุณสามารถดำเนินการคำสั่งได้ :!chmod +x % ในกลุ่ม หากคุณทำงานนี้บ่อยครั้ง เพียงแมปคีย์กับงานนั้น
:noremap < F1 > : : ! โครโมด +x %ใน Vim สามารถใช้คำสั่งภายนอกพร้อมกับเครื่องหมายอัศเจรีย์ (!) ได้
วิธีลบ Keymap ใน Vim
หากต้องการลบคีย์แมปใน Vim ให้ระบุตำแหน่งที่กำหนดไว้ก่อน ตามที่กล่าวไว้ข้างต้น คีย์แมปสามารถเป็นแบบบัฟเฟอร์ภายในและแบบถาวร หากคีย์แมปเป็นแบบถาวรและวางไว้ในไฟล์ vimrc การลบคีย์ออกจากไฟล์จะเป็นการยกเลิกการแมปคีย์
หากการแมปเสร็จสิ้นในบัฟเฟอร์ปัจจุบัน ก็สามารถลบออกได้โดยใช้ :unmap หรือ :เปิดแผนที่! คำสั่ง
- :unmap เพื่อล้างคีย์แมปของโหมดปกติ ภาพ เลือก หรือโหมดรอดำเนินการของผู้ปฏิบัติงาน
- :เปิดแผนที่! เพื่อล้างคีย์แมปของโหมดแทรกและบรรทัดคำสั่ง
ตัวอย่างเช่น หากต้องการลบ
:nunmap | เพื่อลบแผนที่ของ ปกติ โหมด |
:iunmap | เพื่อลบแผนที่ของ แทรก โหมด |
:vunmap | เพื่อลบแผนที่ของ ภาพ และ เลือก โหมด |
:sunmap | เพื่อลบแผนที่ของ เลือก โหมด |
:xunmap | เพื่อลบแผนที่ของ ภาพ โหมด |
:cunmap | เพื่อลบแผนที่ของ บรรทัดคำสั่ง โหมด |
:oumap | เพื่อลบแผนที่ของ ผู้ดำเนินการอยู่ระหว่างการพิจารณา โหมด |
หากต้องการลบแผนที่ทั้งหมดในบัฟเฟอร์ปัจจุบัน ให้ใช้ :mapclear สั่งการ.
:mapclearคำสั่งด้านบนจะล้างคีย์แมปทั้งหมดของโหมดปกติ, ภาพ, เลือกหรือตัวดำเนินการที่รอดำเนินการ
หากต้องการล้างคีย์แมปทั้งหมดของโหมดแทรกและบรรทัดคำสั่งให้ใช้:
:mapclear ! โปรดทราบว่าคำสั่ง Vim เริ่มต้นไม่สามารถชัดเจนได้ แต่สามารถปิดใช้งานได้โดยใช้ :unmap สั่งการด้วย <ไม่> . ตัวอย่างเช่น หากคุณต้องการปิดการใช้งานฟังก์ชัน dd ที่ลบบรรทัดใต้เคอร์เซอร์ ให้ใช้ :unmap dd
dd จะไม่ทำงานในบัฟเฟอร์ปัจจุบันอีกต่อไป เมื่อใช้วิธีการนี้ คุณสามารถปิดใช้งานคีย์แมปใดๆ สำหรับเซสชันปัจจุบันได้
แผ่นโกงการทำแผนที่ Vim Key
รูปภาพต่อไปนี้แสดงรายการคำสั่งทั้งหมดและโหมดเฉพาะสำหรับการอ้างอิง
บทสรุป
การแมปคีย์ Vim เป็นวิธีที่สะดวกในการทำให้งานของคุณ การเชื่อมโยงคีย์ที่ใช้บ่อย คำสั่ง และการดำเนินการอื่นๆ เป็นไปโดยอัตโนมัติ เป็นหัวข้อที่หลากหลาย และในคู่มือนี้ ฉันได้กล่าวถึงประเด็นสำคัญทั้งหมดที่เกี่ยวข้องกับการทำแผนที่คีย์ใน Vim ตั้งแต่ไวยากรณ์ทั่วไปไปจนถึงการสร้างคีย์แมปพื้นฐาน ไปจนถึงการแมปฟังก์ชัน Vimscript ขั้นสูงและคำสั่งภายนอก หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการแมปคีย์ Vim ให้ใช้ :help การแมปคีย์ คำสั่งในกลุ่ม