อย่าเปลี่ยนตำแหน่งเคอร์เซอร์เมื่อเลื่อนใน Emacs


18

มีวิธีหยุดEmacsจากการเลื่อนตำแหน่งเคอร์เซอร์ข้อความของฉัน (aka, point) โดยอัตโนมัติในขณะที่ฉันเลื่อนหรือไม่? ฉันทำตำแหน่งของฉันหายและทำเครื่องหมายด้วยพฤติกรรมที่น่ารำคาญนี้

ฉันทดสอบข้อเสนอแนะต่อไปนี้โดยไม่ประสบความสำเร็จ:

(setq scroll-preserve-screen-position t
scroll-conservatively 0)

(ฉันใช้Emacs24.2 บน Ubuntu และ OS X)

คำตอบ:


11

ฉันคิดว่าคุณต้องการพฤติกรรมของเคอร์เซอร์ (จุด) และพื้นที่ที่มองเห็นควรเป็นในnotepad, geditบรรณาธิการสมัยใหม่อื่น ๆ : ความสามารถในการเปลี่ยนพื้นที่ที่มองเห็นได้อย่างอิสระจากตำแหน่งจุดและเพื่อกลับพื้นที่ที่มองเห็นไปยังตำแหน่งจุดทันทีหลังจากเคลื่อนที่ แต่emacsมีแนวความคิดอื่น: พื้นที่ที่มองเห็นได้ตามตำแหน่งจุดและคีมจับในทางกลับกันเสมอ

ดูเพิ่มเติมที่/programming/9616623/ctrl-up-down-style-scrolling-in-emacs

คำตอบก่อนหน้านี้แสดงให้เห็นว่าสำนวนพิเศษ: ถ้าคุณต้องการที่จะย้ายพื้นที่ที่มองเห็น (ที่มีจุดร่วมกัน) mark-ringห่างไกลจากตำแหน่งปัจจุบันและจากนั้นจะกลับมาจุดในตรงตำแหน่งก่อนหน้านี้คุณควรจะมีนิสัยในการใช้งาน ก็เป็นวิธีการผ่านmark ringไปยังตำแหน่งที่ทำงานปัจจุบัน: คำสั่งมากเช่นisearch-forward, beginning-of-buffer, ace-jump-modeโดยอัตโนมัติบันทึกตำแหน่งหน้าที่ในmark ringและคุณควรจะได้ใช้C-<SPC> C-<SPC>ก่อน แต่C-u C-<SPC>สำหรับการกระโดดกลับ คำสั่งการเลื่อนเช่นscroll-upหรือmwheel-scrollไม่บันทึกตำแหน่งก่อนหน้าโดยอัตโนมัติตามค่าเริ่มต้นเพราะอาจทำให้เกิดเครื่องหมายมากเกินไป

คุณสามารถใช้คำสั่งclone-indirect-bufferหรือview-buffer-other-windowทำงานอิสระกับบัฟเฟอร์ในบางแห่ง และใช้คำสั่งrecenter-top-bottom( C-l) เพื่อจับจุดอย่างต่อเนื่องที่กึ่งกลางของพื้นที่ที่มองเห็น


2
ขอบคุณ คำตอบที่น่าสนใจ ดูเหมือนว่าจะมีปัญหากับ Emac ของฉัน แต่ (ทั้งใน Mac และใน Ubuntu): C-u C-<SPC>ดูเหมือนจะไม่ทำงาน ฉันไม่รู้ว่ามันเป็นปัญหาcua-modeหรือเปล่า ฉันลองใช้ Emacs ด้วย-qตัวเลือก แต่ไม่มีอะไรเปลี่ยนแปลง ความคิดใด ๆ
NVaughan

ที่เลวร้ายเกินไป ... highlight-symbol-modeฉันพบนี้น่ารำคาญสุดเพราะผมใช้ ฉันตั้งเคอร์เซอร์ไว้ที่ตัวแปรเดียวและไฮไลต์สิ่งที่เกิดขึ้นทั้งหมด เมื่อฉันเริ่มเลื่อนเคอร์เซอร์ออกจากตัวแปรและไฮไลท์ทั้งหมดจะหายไป Emacs จะดีกว่ามากถ้าอย่างน้อยมันก็จะทำตัวเหมือนบรรณาธิการร่วมสมัยคนอื่น ๆ เกี่ยวกับเรื่องการเลื่อน
itmuckel

7

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

นั่นคือพิมพ์C-<SPC> C-<SPC>เพื่อดันตำแหน่งจุดปัจจุบันไปยังวงแหวนทำเครื่องหมายจากนั้นพิมพ์C-u C-<SPC>เพื่อตั้งค่าตำแหน่งไปยังตำแหน่งก่อนหน้าในวงแหวนมาร์ค



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