exchange-point-and-mark
คำสั่งที่ถูกผูกไว้C-x C-xแต่ฉันไม่สามารถคิดกรณีการใช้งานใด ๆ ที่จะทำให้มันสมควรเช่นที่โดดเด่นที่มีผลผูกพัน
ฉันจะใช้exchange-point-and-mark
เพื่อปรับปรุงเทคนิคการแก้ไขของฉันได้อย่างไร
exchange-point-and-mark
คำสั่งที่ถูกผูกไว้C-x C-xแต่ฉันไม่สามารถคิดกรณีการใช้งานใด ๆ ที่จะทำให้มันสมควรเช่นที่โดดเด่นที่มีผลผูกพัน
ฉันจะใช้exchange-point-and-mark
เพื่อปรับปรุงเทคนิคการแก้ไขของฉันได้อย่างไร
คำตอบ:
มีสองกรณีที่ฉันนึกถึง: เปิดใช้งานพื้นที่อีกครั้งและปรับขนาดของพื้นที่
ฉันมักใช้การเชื่อมโยงนี้เพื่อเปิดใช้งานพื้นที่อีกครั้งหลังจากดำเนินการคำสั่งบางอย่างที่เลิกใช้งานหรือทำสิ่งที่กำหนดเครื่องหมายและการย้ายจุดโดยไม่ต้องเปิดใช้งานพื้นที่
ตัวอย่างเช่นทำ Cs และค้นหาสิ่งที่ต้องการ กด RET เพื่อออกจากการค้นหาจากนั้น Cx Cx เพื่อทำเครื่องหมายทุกอย่างจากที่ที่คุณเริ่มการค้นหา
อีกตัวอย่างหนึ่งที่ฉันทำมากเมื่อฉันต้องการรวมตัวอย่าง elisp ในคำตอบ StackExchange:
อีกกรณีคือเมื่อคุณกำลังทำเครื่องหมายภูมิภาคและต้องการขยาย / ย่อขนาด ในกรณีนี้คุณสามารถข้ามไปยัง "ส่วนอื่น ๆ " ของพื้นที่ได้สะดวกย้ายมันแล้วกระโดดกลับ หากพื้นที่ดังกล่าวเปิดใช้งานอยู่การกด Cx Cx จะทำให้พื้นที่ใช้งานได้
ถาม Emacs: C-h r i exchange-point-and-mark RET
หรือดีกว่า, C-h r i C-x C-x RET
. สิ่งนี้จะนำคุณไปสู่ข้อมูลที่แสดงด้านล่าง
นี่คือคู่มือ Emacs การตั้งค่าโหนดระบุว่าตอบคำถามของคุณ:
C-x C-x
เป็นประโยชน์เมื่อคุณมีความพึงพอใจกับตำแหน่งของจุด แต่ต้องการที่จะย้ายในส่วนอื่น ๆ ของภูมิภาค (ซึ่งเครื่องหมายนั้น)C-x C-x
หากจำเป็นให้ใส่เครื่องหมายที่ตำแหน่งใหม่โดยใช้ครั้งที่สองหากจำเป็นให้กลับไปที่ตำแหน่งเดิม โดยปกติหากเครื่องหมายไม่แอ็คทีฟคำสั่งนี้จะเปิดใช้งานเครื่องหมายอีกครั้งก่อนที่จะถูกตั้งค่าล่าสุดเพื่อให้แน่ใจว่าพื้นที่ถูกไฮไลต์ไว้ อย่างไรก็ตามหากคุณเรียกมันว่ามีอาร์กิวเมนต์นำหน้ามันจะทำให้เครื่องหมายไม่ทำงานและพื้นที่ที่ไม่ได้รับแสงสว่าง คุณสามารถใช้วิธีนี้เพื่อข้ามไปยังเครื่องหมายC-u C-<SPC>
ในลักษณะจะคล้ายกัน
และนี่คือสิ่งที่มันบอกเกี่ยวกับมันในโหนดDisabled Transient Mark :
การปิด [
transient-mark-mode
] ปิดสวิตช์ Emacs เป็นโหมดการทำงานอื่น:
การตั้งเครื่องหมายด้วยคำสั่งเช่น
C-<SPC>
หรือC-x C-x
ไม่เน้นบริเวณนั้น ดังนั้นคุณไม่สามารถบอกได้โดยดูที่เครื่องหมายนั้น คุณต้องจำไว้วิธีแก้ปัญหาตามปกติสำหรับปัญหานี้คือการกำหนดเครื่องหมายและใช้งานในไม่ช้าก่อนที่คุณจะลืมว่าอยู่ที่ไหน นอกจากนี้คุณยังสามารถตรวจสอบที่เครื่องหมายโดยใช้
C-x C-x
ซึ่งการแลกเปลี่ยนตำแหน่งของจุดและเครื่องหมาย - ดูการตั้งมาร์คขณะที่โหมดการ Transient มาร์คปิดคุณสามารถเปิดใช้งานได้ชั่วคราวโดยใช้หรือ
C-<SPC> C-<SPC>
C-u C-x C-x
และ:
C-u C-x C-x
แลกเปลี่ยนจุดและเครื่องหมายเปิดใช้งานการทำเครื่องหมายและเปิดใช้งานโหมด Transient Mark ชั่วคราวจนกว่าเครื่องหมายจะถูกปิดการใช้งานต่อไป (นี่คือC-x C-x
คำสั่งexchange-point-and-mark
โดยมีอาร์กิวเมนต์นำหน้า)
ฉันใช้สิ่งนี้เมื่อฉันสูญเสียการเลือกเนื่องจากการดำเนินการบางอย่างที่ลบออกไปและฉันต้องการคืนค่าการเลือก หนึ่งในสถานการณ์ดังกล่าวจะเป็น:
สิ่งนี้เกิดขึ้นเมื่อฉันต้องการสำรองข้อมูลแบบเฉพาะกิจของพื้นที่ที่เลือกและเพื่อทำการทดลองกับสำเนาเช่นฉันต้องการค้นหาและแทนที่บางอย่าง แต่ฉันไม่สามารถคิดวิธีที่จะทำ มันเป็นวิธีที่ไม่ทำลายข้อความบางส่วนซึ่งมีความหมายว่าจะยังคงอยู่ดังนั้นในภายหลังฉันจะเปลี่ยนมันจากสำเนา
คำตอบอื่น ๆ จะเน้นที่ประโยชน์ของการใช้งานC-x C-x
เมื่อtransient-mark-mode
ใด แต่C-x C-x
มีมาก่อนtransient-mark-mode
และมีประโยชน์อย่างอิสระจากมัน
บทบาทหลักของC-x C-x
คือการแลกเปลี่ยนจุดและเครื่องหมาย สิ่งนี้มีประโยชน์เมื่อคุณกำลังแก้ไขสองจุดในบัฟเฟอร์เดียวและด้วยเหตุผลบางอย่างไม่ต้องการแยกหน้าต่างปัจจุบัน ทำการแก้ไขตั้งเครื่องหมายย้ายไปยังจุดอื่น ๆ ในบัฟเฟอร์ทำการแก้ไขC-x C-x
บางอย่างทำการแก้ไขบางอย่างในที่เดิมC-x C-x
ทำการแก้ไขเพิ่มเติมโฆษณาคลื่นไส้ (หากคุณไม่ได้วางแผนที่จะกลับมาที่จุดที่สองC-u C-SPC
อาจเป็นเรื่องที่เข้าใจได้ง่ายขึ้นค้นหาเครื่องหมายวงแหวนในคู่มือ Emacs)
เมื่อtransient-mark-mode
ปิดการใช้งานC-x C-x
มีจุดประสงค์สำคัญอื่น: ช่วยให้คุณทราบว่าภูมิภาคอยู่ที่ไหน C-x C-x
เหลือบไปที่จุดC-x C-x
อีกครั้ง
(และในกรณีที่คุณสงสัย - ใช่พวกเราบางคนยังต้องการใช้ Emacs กับtransient-mark-mode
คนพิการ)