คำแนะนำเกี่ยวกับ Vim Marks

Kha Naeana Keiyw Kab Vim Marks



เครื่องหมายเป็นกลุ่มคือตำแหน่งเฉพาะในไฟล์ที่สามารถตั้งค่าด้วยชื่อและส่งคืนในภายหลังโดยการเรียกชื่อเหล่านั้น จดหมาย ตามด้วยตัวอักษรอีกตัวหนึ่ง {a-z หรือ A-Z} สามารถใช้กำหนดเครื่องหมายได้ และ a คำพูดเดียว ) ') ที่มีชื่อเครื่องหมายใช้เพื่อกลับไปยังเครื่องหมายนั้น โปรดทราบว่า ตัวพิมพ์เล็ก ตัวอักษรถูกใช้ในการตั้งค่า เครื่องหมายท้องถิ่น ในขณะที่ ตัวพิมพ์ใหญ่ ตัวอักษรถูกใช้เพื่อตั้งค่า เครื่องหมายระดับโลก .

ทำความเข้าใจกับ Vim Marks

Vim ช่วยให้คุณกำหนดตำแหน่งเฉพาะในไฟล์ โดยเฉพาะอย่างยิ่งหากคุณกำลังทำงานกับไฟล์ขนาดใหญ่ที่คุณต้องการเลื่อนไปมาอย่างรวดเร็ว คุณลักษณะนี้ทำให้การนำทางไฟล์ที่มีหลายร้อยบรรทัดเป็นเรื่องง่ายเป็นพิเศษ ตัวอย่างเช่น หากคุณกำลังทำงานกับโค้ด Python ที่มีโค้ด 500 บรรทัด คุณอาจต้องเลื่อนดูไฟล์เพื่อไปยังบรรทัดโค้ดที่ต้องการ แต่ถ้าคุณกำหนดตำแหน่งที่ต้องการ คุณก็สามารถเคลื่อนที่ได้อย่างง่ายดายด้วยการกดปุ่มสองสามปุ่ม







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



บันทึก: ฉันใช้การกระจาย Linux (Ubuntu 22.04) และ Vim เวอร์ชัน 8.2 สำหรับคำแนะนำในคู่มือนี้



ตั้งมาร์ค

หากต้องการตั้งค่าเครื่องหมายเป็นกลุ่ม ให้วางเคอร์เซอร์ในตำแหน่งที่คุณต้องการกำหนดเครื่องหมายแล้วกดปุ่ม สำคัญ , ตามด้วยจดหมายจาก ถึง กับ . เช่นหากต้องการตั้งเครื่องหมายชื่อตัวอักษร กับ แล้วฉันจะพิมพ์ มซ ในโหมดปกติ





มซ

มีหลายวิธีในการตั้งค่าเครื่องหมายใน Vim ขั้นตอนนี้เป็นวิธีที่เร็วที่สุด

แม้ว่าขั้นตอนที่กล่าวมาข้างต้นจะใช้กันอย่างแพร่หลายและรวดเร็วมาก แต่คุณจะไม่เห็นภาพใด ๆ ว่ามีการตั้งค่าเครื่องหมายไว้หรือไม่ เว้นแต่คุณจะตรวจสอบอย่างชัดเจน



หากต้องการแสดงรายการเครื่องหมายใน Vim ให้ใช้ :เครื่องหมาย คำสั่งซึ่งผมจะกล่าวถึงใน รายการเครื่องหมาย ส่วน. อย่างไรก็ตาม คุณสามารถเปิดใช้งานการแสดงการกดแป้นพิมพ์ที่ด้านล่างของหน้าต่างได้โดยใช้ :set showcmd.

: : ชุด แสดง cmd

คุณยังสามารถใช้ เครื่องหมาย หรือ เครื่องหมาย คำสั่งในการตั้งเครื่องหมาย ตัวอย่างเช่น กับ เครื่องหมายยังสามารถตั้งค่าได้โดยใช้คำสั่งด้านล่าง:

: : มาร์คซี

ไฟล์ Vim แต่ละไฟล์สามารถมีเครื่องหมายได้ ถึง กับ แต่ถ้าคุณกำหนดเครื่องหมายไว้ กับ สำหรับตำแหน่งและใช้ชื่อเครื่องหมายเดียวกันสำหรับตำแหน่งอื่น เครื่องหมายที่ตั้งไว้ก่อนหน้านี้จะถูกลบออก (เขียนทับ)

โปรดทราบว่าคุณสามารถใช้อักษรตัวพิมพ์ใหญ่ {A-Z} เพื่อกำหนดเครื่องหมายได้ มีเครื่องหมายอักษรตัวพิมพ์ใหญ่คือ เครื่องหมายระดับโลก และขึ้นอยู่กับไฟล์ ฉันจะหารือเกี่ยวกับเครื่องหมายสากลโดยละเอียดในหัวข้อแยกต่างหาก

รายการเครื่องหมาย

ตามที่กล่าวไว้ในส่วนที่แล้ว เครื่องหมายที่สร้างขึ้นทั้งหมดสามารถแสดงรายการได้อย่างง่ายดาย

ใช้ :เครื่องหมาย สั่งการ.

: : เครื่องหมาย

ในภาพเอาต์พุตด้านบน เครื่องหมายทั้งหมดจะแสดงรายการไว้ บางส่วนเป็นแบบกำหนดเองและบางส่วนเป็นค่าเริ่มต้น

มีวิธีอื่นในการแสดงรายการเครื่องหมายด้วย หากต้องการแสดงเครื่องหมายเฉพาะ ให้ใช้ :เครื่องหมาย คำสั่งที่มีชื่อเครื่องหมาย เช่น เพื่อแสดงรายการเครื่องหมาย กับ, ใช้ :เครื่องหมาย <เครื่องหมายชื่อ> สั่งการ:

: : เครื่องหมาย z

ในทำนองเดียวกัน หากต้องการแสดงรายการหลายเครื่องหมาย ให้ใช้ :เครื่องหมาย <ทำเครื่องหมายชื่อ> : :

: : ทำเครื่องหมาย abz

ที่ไหน , และ กับ เป็นชื่อเครื่องหมายที่แตกต่างกัน

เครื่องหมายภายในไฟล์จะไม่ปรากฏให้เห็นตามค่าเริ่มต้น และการดูแบบกราฟิกจะมีปลั๊กอินต่างๆ ปลั๊กอินที่รู้จักกันดีที่สามารถแสดงเครื่องหมายใน Vim ได้คือ โชว์มาร์ก และ ลายเซ็นเป็นกลุ่ม .

เนื่องจากปลั๊กอิน ShowMarks เต็มไปด้วยข้อผิดพลาดและไม่ได้รับการอัปเดตมาหลายปีแล้ว ฉันจะติดตั้ง ลายเซ็นเป็นกลุ่ม ปลั๊กอินเพื่อดูเครื่องหมาย

เมื่อติดตั้งปลั๊กอิน ให้ตั้งค่าเครื่องหมาย จากนั้นปลั๊กอินจะแสดงชื่ออย่างชัดเจนตามที่แสดงในภาพต่อไปนี้

ข้ามไปที่มาร์ค

หลังจากตั้งค่าเครื่องหมายแล้ว ขั้นตอนต่อไปคือการนำทางเครื่องหมาย หากต้องการข้ามไปยังจุดเริ่มต้นของบรรทัดที่ทำเครื่องหมายไว้ในบัฟเฟอร์ปัจจุบัน ให้กดปุ่ม เครื่องหมายคำพูดเดี่ยว (') มีชื่อเครื่องหมาย {a-z}

'กับ

หากต้องการข้ามไปยังตำแหน่งที่แน่นอน (แถว/คอลัมน์) ให้กดปุ่ม แบ็คติ๊ก (`) มีชื่อเครื่องหมาย {a-z}

`z

ซิงเกิล (') และ backtick (`) ยังสามารถใช้เพื่อข้ามเครื่องหมายสากล {A-Z} ได้ด้วย

ตารางการนำทางผ่านเครื่องหมายตัวพิมพ์เล็กระบุไว้ด้านล่าง:

'' กระโดดกลับไปที่เส้นจากจุดที่คุณกระโดด
กระโดดกลับไปยังตำแหน่งที่คุณกระโดด
' . /`. เพื่อข้ามไปยังบรรทัด/ตำแหน่งที่แก้ไขล่าสุด
`[\`] เพื่อข้ามไปยังจุดเริ่มต้น/จุดสิ้นสุดของข้อความที่ดึงล่าสุด
`<\`> เพื่อข้ามไปยังจุดเริ่มต้น/จุดสิ้นสุดของการเลือกภาพล่าสุด
[นับ]] ' หากต้องการข้ามไปยังบรรทัดถัดไปของ [นับ] จำนวนเครื่องหมายจากตำแหน่งเคอร์เซอร์ปัจจุบัน
[นับ]]` หากต้องการข้าม [นับ] จำนวนเครื่องหมายจากตำแหน่งเคอร์เซอร์ปัจจุบัน

สิ่งสำคัญคือต้องทราบว่าปุ่มนำทางที่กล่าวถึงข้างต้นใช้สำหรับเครื่องหมายตัวพิมพ์เล็ก

การอภิปรายเกี่ยวกับเครื่องหมาย Vim จะไม่สมบูรณ์หากเราไม่หารือเกี่ยวกับ กระโดด และ รายการกระโดด . ที่ รายการกระโดด เก็บการกระโดดที่เกิดขึ้นภายในไฟล์หรือข้ามไฟล์ ไม่ว่าจะเป็นเครื่องหมายหรือการข้ามเริ่มต้นของ Vim ปกติ

หากต้องการแสดงรายการการกระโดดทั้งหมด ให้ใช้ :กระโดด คำสั่ง และหากต้องการลบการกระโดดทั้งหมด ให้ใช้ :clearjumps. หากต้องการนำทางการกระโดด ให้ใช้ Ctrl+o และ Ctrl+i กุญแจ

บันทึก: ก่อนที่จะลบการกระโดด โปรดทราบว่าการลบการกระโดดอาจส่งผลต่อประวัติการนำทาง

ฉันพบว่าการใช้การกระโดดสะดวกกว่าในการเคลื่อนตัวผ่านเครื่องหมาย ก่อนอื่น ฉันเคลียร์การกระโดดทั้งหมด เพราะหากไม่ทำอย่างนั้น ฉันอาจจะไปอยู่ในไฟล์อื่น จากนั้นฉันก็ลงทะเบียนมาร์คกระโดดเข้า รายการกระโดด ไฟล์โดยใช้เครื่องหมายคำพูดเดี่ยวหรือ backtick เสร็จแล้วก็ใช้. Ctrl+o และ Ctrl+i ปุ่มเพื่อข้ามเครื่องหมายอย่างรวดเร็ว

หากต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับการนำทางเครื่องหมาย ให้ใช้ :เครื่องหมายช่วยเหลือ และ :help Jumplist คำสั่ง

เครื่องหมายสากล

เครื่องหมายสากลใน Vim ถูกตั้งค่าให้ข้ามระหว่างไฟล์ ต่างจากเครื่องหมายท้องถิ่น เครื่องหมายสากลถูกกำหนดด้วยตัวพิมพ์ใหญ่และสามารถใช้กับไฟล์ได้

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

หากต้องการตั้งค่าเครื่องหมายสากล ให้ใช้คำสั่งเครื่องหมาย ตามด้วยตัวพิมพ์ใหญ่ {A-Z}

มซ

ตอนนี้คุณสามารถเข้าถึงเครื่องหมายนี้จากไฟล์ใดก็ได้ หากต้องการข้ามไปยังเครื่องหมายสากล ให้ใช้ขั้นตอนเดียวกันกับที่กล่าวไว้ใน ข้ามไปที่มาร์ค ส่วน. ไฟล์ที่มีเครื่องหมายจะถูกเปิดขึ้น โดยปิดไฟล์ปัจจุบัน

'กับ

ในทำนองเดียวกัน หากต้องการไปยังตำแหน่งที่แน่นอน ให้ใช้ backtick ที่มีชื่อเครื่องหมาย (`Z)

เครื่องหมายหมายเลข

เครื่องหมายตัวเลข {0-9} ใช้เพื่อจัดเก็บตำแหน่งเคอร์เซอร์ปัจจุบันใน วิมอินโฟ ไฟล์เมื่อคุณออกจากไฟล์ เครื่องหมายที่มีหมายเลขเป็นเครื่องหมายพิเศษและไม่สามารถตั้งค่าได้โดยตรง เครื่องหมายเหล่านี้สร้างขึ้นโดยอัตโนมัติใน วิมอินโฟ เพื่อติดตามการแก้ไขในไฟล์เมื่อคุณออกจากไฟล์ ตัวอย่างเช่น เมื่อคุณออกจากไฟล์ใดๆ วิมอินโฟ ไฟล์จะบันทึกข้อมูลตำแหน่งเคอร์เซอร์สุดท้ายในเครื่องหมายตัวเลข เช่น 0, 1, 2 และอื่นๆ

คุณสามารถแสดงรายการเครื่องหมายตัวเลขได้โดยใช้ :เครื่องหมาย สั่งการ.

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเครื่องหมายหมายเลข Vim ให้ใช้ :help viminfo-file-marks สั่งการ.

การลบเครื่องหมาย

มีหลายวิธีในการลบเครื่องหมายทั้งหมด เครื่องหมายเฉพาะ หรือช่วงของเครื่องหมาย

หากต้องการลบเครื่องหมาย :delmarks หรือ :เดลม์ สามารถใช้คำสั่งได้

:delmarks z หากต้องการลบเครื่องหมายเฉพาะ เช่น กับ
:delmarks x-z หากต้องการลบเครื่องหมายออกจาก x ถึง กับ เช่นนั้นการลบ x , และ , และ กับ
:delmarks abxy ลบ , , เอ็กซ์, และ และ เครื่องหมาย
:delmarks zZ ลบ กับ และ กับ เครื่องหมาย

หากต้องการล้างเครื่องหมายตัวพิมพ์เล็ก {a-z} ทั้งหมด ให้ใช้ :เดลมาร์ก! สั่งการ. หากต้องการล้างเครื่องหมายตัวพิมพ์ใหญ่และตัวเลข คุณต้องใช้ :delmarks A-Z และ :เดลมาร์ก 0-9 คำสั่ง หากคุณต้องการล้างเครื่องหมายตัวพิมพ์ใหญ่ {A-Z} ให้ใช้ :delmarks A-Z . เครื่องหมายตัวเลขสามารถล้างได้โดยใช้คำสั่งเดียวกัน

คุณสมบัติขั้นสูง

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

ในตารางต่อไปนี้ กับ ใช้เป็นชื่อเครื่องหมาย

' z / d`z ลบจากบรรทัดปัจจุบันไปยังบรรทัดที่ทำเครื่องหมายไว้ถัดไป / ลบจากตำแหน่งปัจจุบันจนถึงตำแหน่งที่ทำเครื่องหมายไว้ถัดไป
' z / c`z เปลี่ยนข้อความจากบรรทัดปัจจุบันเป็นบรรทัดที่ทำเครื่องหมายไว้ถัดไป / เปลี่ยนข้อความจากตำแหน่งปัจจุบันจนถึงตำแหน่งที่ทำเครื่องหมายไว้ถัดไป
และ ' z / y`z คัดลอก (ดึง) ข้อความจากบรรทัดปัจจุบันไปยังบรรทัดที่ทำเครื่องหมายถัดไป / คัดลอกข้อความจากตำแหน่งปัจจุบันจนถึงตำแหน่งที่ทำเครื่องหมายไว้ถัดไป

หากคุณต้องการดำเนินการก เส้นตรง จากนั้นเรียกเครื่องหมายโดยใช้เครื่องหมายคำพูดเดี่ยว (') และหากคุณต้องการดำเนินการ ลักษณะเฉพาะ การดำเนินการให้ใช้ backtick (`)

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

: : 'เอ็กซ์' และ < d,c หรือ y >

ตัวอย่างเช่น หากคุณต้องการลบบรรทัดทั้งหมดออกจากเครื่องหมาย 'x ทำเครื่องหมาย 'และ ใช้ : : ' เอ็กซ์, ' ใช่ สั่งการ.

ดูไฟล์ต่อไปนี้พร้อมเครื่องหมาย และ .

เพื่อลบเส้นทั้งหมดออกจากเครื่องหมาย ไปที่ (รวมถึง) ดำเนินการคำสั่งที่ระบุด้านล่าง:

: : 'ข' ซีดี

ความแตกต่างระหว่างเครื่องหมายตัวพิมพ์เล็กและเครื่องหมายตัวพิมพ์ใหญ่

ทั้งเครื่องหมายตัวพิมพ์เล็กและตัวพิมพ์ใหญ่มีฟังก์ชันการทำงานที่แตกต่างกัน

เครื่องหมายตัวพิมพ์เล็กจะใช้ภายในไฟล์และสามารถตั้งค่าได้จากตัวอักษร เป็นตัวอักษร กับ ในไฟล์ใดก็ได้ สิ่งเหล่านี้ไม่ซ้ำกับไฟล์ที่สร้างขึ้น โดยสามารถเข้าถึงและจัดการได้ภายในไฟล์ที่ถูกสร้างขึ้น ในทางกลับกัน เครื่องหมายตัวพิมพ์ใหญ่ {A-Z} เป็นเครื่องหมายร่วมและไม่สามารถตั้งค่าด้วยชื่อเดียวกันได้ เครื่องหมายเหล่านี้สามารถเข้าถึงได้จากไฟล์ใดๆ โดยใช้เครื่องหมายอะพอสทรอฟี (') หรือเครื่องหมายแบ็กทิก (`)

การนำทางและขั้นตอนการลบเครื่องหมายตัวพิมพ์เล็กและตัวพิมพ์ใหญ่จะคล้ายกัน แต่เครื่องหมายตัวพิมพ์เล็กจะมีคำสั่งการนำทางมากกว่าเนื่องจากการตั้งค่าในไฟล์

สิ่งสำคัญอีกประการหนึ่งคือเครื่องหมายจะไม่ถูกลบเมื่อออกจากไฟล์หรือเซสชัน ดังนั้น หากคุณได้ตั้งค่าเครื่องหมายไว้ เมื่อเปิดใหม่อีกครั้ง เครื่องหมายไฟล์จะยังคงอยู่เหมือนเดิม

แผ่นโกง Vim Marks

การดำเนินการหลักที่คุณต้องใช้คุณลักษณะเครื่องหมายในตัวแก้ไข Vim มีการกล่าวถึงในภาพต่อไปนี้

บทสรุป

เครื่องหมายในตัวแก้ไข Vim เป็นตำแหน่งที่ตั้งค่าแบบกำหนดเองเพื่อนำทางไฟล์ที่มีหลายร้อยบรรทัด เครื่องหมายมีสองประเภท คือ เครื่องหมายตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก เครื่องหมายตัวพิมพ์เล็กมีประโยชน์ในการนำทางภายในไฟล์ ในการนำทางข้ามไฟล์ จะใช้เครื่องหมายตัวพิมพ์ใหญ่ เพื่อกำหนดเครื่องหมายตัวอักษร ใช้กับอักษรตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่อื่น {a-z, A-Z} เครื่องหมายของไฟล์ใด ๆ สามารถแสดงรายการได้โดยใช้ :เครื่องหมาย สั่งการ. หากต้องการลบเครื่องหมาย :delmarks หรือ :เดลม์ มีการใช้คำสั่งที่มีชื่อเครื่องหมาย