วิธีแมปคีย์ใน Vim

Withi Maep Khiy Ni Vim



ใน Vim การแมปคีย์เป็นกระบวนการในการกำหนดชุดของคีย์หรือคำสั่งให้กับคีย์เฉพาะเพื่อทำงานเฉพาะอย่าง ตัวอย่างเช่น เมื่อต้องการเลือกบรรทัดทั้งหมดในไฟล์ที่คุณใช้ ggVG คำสั่งและคุณต้องกดสี่ปุ่มเพื่อทำ แล้วการกดแป้นพิมพ์เพียงครั้งเดียวล่ะ? นี่คือจุดที่การแมปคีย์ Vim มีประโยชน์ การแมปคีย์เป็นวิธีหนึ่งในการทำให้งานต่างๆ ที่ทำบ่อยใน Vim เป็นแบบอัตโนมัติ และคุณต้องเคยได้ยินเรื่องนี้มาก่อน หากคุณกำลังทำอะไรมากกว่าสองครั้ง ให้ทำให้เป็นอัตโนมัติ!

ในคู่มือที่ครอบคลุมนี้ ผมจะอธิบายวิธีแมปคีย์ใน Vim เพื่อให้การดำเนินการเป็นแบบอัตโนมัติ ตั้งแต่การสร้างคีย์แมปพื้นฐานไปจนถึงการแมปคีย์ขั้นสูง ตลอดจนกระบวนการทำให้คีย์แมปเป็นแบบถาวรและลบออก

ไวยากรณ์

ในการแมปคีย์ใน 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 ให้ใช้คำสั่งต่อไปนี้

:command Mycmd :set number ความกว้างของข้อความ = 80

ตอนนี้เข้าสู่โหมดคำสั่งและดำเนินการ :Mycmd สั่งการ.

ผู้ดำเนินการแมปโหมดที่รอดำเนินการ

โหมดรอดำเนินการของตัวดำเนินการคือโหมดที่ Vim รอคำสั่งการเคลื่อนไหวหลังจากกดปุ่มตัวดำเนินการ ตัวดำเนินการทั่วไปคือ y, d และ c ตัวอย่างเช่น หากต้องการลบบรรทัดปัจจุบันและ 3 บรรทัดต่อไปนี้ คุณจะต้องใช้ตัวดำเนินการ d ด้วย 3จ การเคลื่อนไหว (d3j) คุณไม่สามารถกดปุ่มเหล่านี้พร้อมกันได้เพื่อให้บรรลุการทำงานที่ต้องการ

โดยทั่วไปโหมดนี้จะใช้เพื่อทำแผนที่การเคลื่อนไหว เรามาแมปการเคลื่อนไหวที่จะเลือกเส้นปัจจุบันและอีก 3 เส้นตามด้วย

:onoremap < F2 > 3จ

ตอนนี้เพื่อดึงบรรทัดปัจจุบันและ 3 บรรทัดตามด้วยให้ใช้ theF2 คีย์ในลักษณะเดียวกัน ยังสามารถประยุกต์ใช้โอเปอเรเตอร์ได้อีกด้วย

สิ่งสำคัญอีกประการหนึ่งที่ต้องจำไว้คือ หากคุณเพิ่มการนับให้กับการเคลื่อนไหวที่แมปที่กล่าวถึงข้างต้น สมมติว่า 2 แผนที่จะใช้เป็น 23j ไม่ใช่ 6j เพื่อแก้ไขปัญหานี้ คุณสามารถใช้นิพจน์ register “= ได้ แผนที่ด้านบนสามารถแก้ไขได้ดังนี้ @=’3j’ .

:onoremap < F2 > @ ='3จ' < CR >

วิธีการแมปเหตุการณ์เมาส์

แม้ว่า 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 เพื่อล้างคีย์แมปของโหมดปกติ ภาพ เลือก หรือโหมดรอดำเนินการของผู้ปฏิบัติงาน
  • :เปิดแผนที่! เพื่อล้างคีย์แมปของโหมดแทรกและบรรทัดคำสั่ง

ตัวอย่างเช่น หากต้องการลบ ที่สำคัญให้ใช้ :unmap . นอกจากนี้ การถอดคีย์ออกอาจเป็นโหมดเฉพาะก็ได้ หากคุณต้องการลบแผนที่โหมดปกติ ให้ใช้ :nunmap <คีย์> . คำสั่งเฉพาะโหมดอื่นๆ เพื่อลบคีย์แมปมีดังต่อไปนี้:

:nunmap เพื่อลบแผนที่ของ ปกติ โหมด
:iunmap เพื่อลบแผนที่ของ แทรก โหมด
:vunmap เพื่อลบแผนที่ของ ภาพ และ เลือก โหมด
:sunmap เพื่อลบแผนที่ของ เลือก โหมด
:xunmap เพื่อลบแผนที่ของ ภาพ โหมด
:cunmap เพื่อลบแผนที่ของ บรรทัดคำสั่ง โหมด
:oumap เพื่อลบแผนที่ของ ผู้ดำเนินการอยู่ระหว่างการพิจารณา โหมด

หากต้องการลบแผนที่ทั้งหมดในบัฟเฟอร์ปัจจุบัน ให้ใช้ :mapclear สั่งการ.

:mapclear

คำสั่งด้านบนจะล้างคีย์แมปทั้งหมดของโหมดปกติ, ภาพ, เลือกหรือตัวดำเนินการที่รอดำเนินการ

หากต้องการล้างคีย์แมปทั้งหมดของโหมดแทรกและบรรทัดคำสั่งให้ใช้:

:mapclear !

โปรดทราบว่าคำสั่ง Vim เริ่มต้นไม่สามารถชัดเจนได้ แต่สามารถปิดใช้งานได้โดยใช้ :unmap สั่งการด้วย <ไม่> . ตัวอย่างเช่น หากคุณต้องการปิดการใช้งานฟังก์ชัน dd ที่ลบบรรทัดใต้เคอร์เซอร์ ให้ใช้ :unmap dd .

:unmap วว < ไม่ >

dd จะไม่ทำงานในบัฟเฟอร์ปัจจุบันอีกต่อไป เมื่อใช้วิธีการนี้ คุณสามารถปิดใช้งานคีย์แมปใดๆ สำหรับเซสชันปัจจุบันได้

แผ่นโกงการทำแผนที่ Vim Key

รูปภาพต่อไปนี้แสดงรายการคำสั่งทั้งหมดและโหมดเฉพาะสำหรับการอ้างอิง

บทสรุป

การแมปคีย์ Vim เป็นวิธีที่สะดวกในการทำให้งานของคุณ การเชื่อมโยงคีย์ที่ใช้บ่อย คำสั่ง และการดำเนินการอื่นๆ เป็นไปโดยอัตโนมัติ เป็นหัวข้อที่หลากหลาย และในคู่มือนี้ ฉันได้กล่าวถึงประเด็นสำคัญทั้งหมดที่เกี่ยวข้องกับการทำแผนที่คีย์ใน Vim ตั้งแต่ไวยากรณ์ทั่วไปไปจนถึงการสร้างคีย์แมปพื้นฐาน ไปจนถึงการแมปฟังก์ชัน Vimscript ขั้นสูงและคำสั่งภายนอก หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการแมปคีย์ Vim ให้ใช้ :help การแมปคีย์ คำสั่งในกลุ่ม