การกำหนดหน้าต่างที่ชี้โดย“ หน้าต่างอื่น”


10

ใน emacs บ่อยกว่าที่ฉันชอบฉันท้ายด้วย 4 หน้าต่างหรือมากกว่า

ฉันจะใช้ตัวอย่างนั้น:

+--------|-----------+
|        |           |
|   1    |   2       |
|        |           |
+--------+-----------+
|    3   |     4     |
|        +-----------+
|        |     5     |
+--------+-----------+

ฟังก์ชั่นจำนวนมากสามารถดำเนินการในother-window(ปกติหน้าต่างเดียวกันชี้โดยC-x o) scroll-other-windowที่มีประโยชน์เป็นพิเศษ อย่างไรก็ตามเมื่อเปิดหน้าต่าง 4 หน้าต่างขึ้นother windowไปไม่น่าจะเป็นหน้าต่างที่ฉันต้องการ

มีวิธีง่ายๆในการจัดการที่จะตั้งother-windowโดยไม่ต้องเปลี่ยนเค้าโครงหน้าต่าง / บัฟเฟอร์? แน่นอนมันสามารถทำได้โดยใช้พวงC-x 4 bและC-bแต่ฉันไม่ต้องการเปลี่ยนเค้าโครง ตัวอย่างเช่น:

  • หากการแก้ไขในหน้าต่าง4ในภาพด้านบนมีวิธีง่าย ๆ ในการตั้งค่าC-M-vให้เลื่อนหน้าต่าง1 ?
  • หรือเพียงแค่สมมติว่าโฟกัสในหน้าต่าง3วิธีการตั้งค่าother-windowไปยังจุดที่หน้าต่าง2 ?

คำตอบ:


7

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

การเปลี่ยนหน้าต่างที่other-windowชี้ไปเป็นวิธีหนึ่งในการบรรลุเป้าหมายนั้น แต่ฉันต้องการแนะนำเวิร์กโฟลว์ทางเลือก:

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

การสาธิตของหน้าต่างเอซ

หากคุณผูกace-windowไว้C-x oคุณไม่จำเป็นต้องจดจำการผูกคีย์เพิ่มเติมและมันจะรู้สึกเหมือนคุณกำลังใช้รุ่นที่มีการชาร์จother-windowมากเกินไป

นอกจากนี้หากคุณใช้ระบบสัมผัสและ / หรือไม่ต้องการเลื่อนนิ้วออกจากแถวบ้านคุณสามารถสั่งace-windowให้หน้าต่าง "หมายเลข" ใช้ตัวอักษรแทนตัวเลข (ดูด้านล่าง)

ace-windowมีให้บริการในMELPA หลังจากติดตั้งผ่านM-x package-install RET ace-window RETคุณสามารถใส่สิ่งต่อไปนี้ในไฟล์ init ของคุณเพื่อตั้งค่าตามที่อธิบายไว้ข้างต้น:

(global-set-key (kbd "C-x o") 'ace-window)
(setq aw-keys '(?a ?b ?c ?d ?e ?f ?g ?h ?i))

ขอบคุณสำหรับการสาธิตฉันได้เห็นแพคเกจนี้ในเว็บไซต์อื่น ๆ และสงสัยว่ามันทำงานอย่างไรจริง ๆ แล้วฉันสามารถสลับหน้าต่างได้อย่างง่ายดายเนื่องจากฉันได้M-1 M-2 ..เลือกหมายเลขหน้าต่าง 1, 2 โดยใช้window-numberแพ็คเกจ
Lompik

1

จากการตรวจสอบอย่างรวดเร็วของแหล่งที่มาของother-windowมันดูเหมือนว่ามันขึ้นอยู่กับหน้าต่างที่ถูกส่งกลับโดยnext-windowที่กำหนดไว้ในค น่าเสียดายที่scroll-other-windowมีการกำหนดไว้ใน c และอาจเรียกหน้าต่างถัดไปจากที่นั่น ฉันไม่คิดว่ามันจะง่ายกว่านั้น

อย่างไรก็ตามswitch-to-buffer-other-windowดูเหมือนว่าจะใช้pop-to-bufferดังนั้นคุณอาจโชคดี


1

ไม่มีวิธีง่าย ๆ ในการจัดการกับรายการหน้าต่างดังนั้นผลลัพธ์ที่ส่งคืนโดยother-windowได้รับการแก้ไขมากหรือน้อย นี่ไม่ใช่สิ่งที่เลวร้ายสำหรับแต่ละคนเพราะมันช่วยให้เกิดความมั่นคงเมื่อนำทางหน้าต่าง เกี่ยวกับสองสถานการณ์ที่คุณอธิบายด้วย elisp หรือแมโครบางอย่างคุณสามารถเหมาะสมกับเวิร์กโฟลว์ของคุณ

หากการแก้ไขในหน้าต่าง 4 ในภาพด้านบนมีวิธีง่าย ๆ ในการตั้งค่า CMv เพื่อเลื่อนหน้าต่าง 1 หรือไม่?

คุณสามารถใช้ข้อมูลโค้ดแบบง่าย ๆ เช่นด้านล่างเพื่อใช้other-windowจำนวนครั้งที่เหมาะสมเลื่อนลงและเลื่อนกลับไปที่หน้าต่างเดิม

 (defun my-scroll-down-other-window (&optional arg)
 "Like `scroll-other-window' but takes a prefix argument 
 that indicates which window to scroll."
  (interactive "p")
  (save-selected-window
    (other-window arg)
    (scroll-down)))

คุณสามารถผ่านอาร์กิวเมนต์คำนำหน้าเพื่อระบุหน้าต่างที่จะเลื่อน เนื่องจากคุณสามารถอนุมานได้ว่ามันใช้กลไก inbuilt ในother-windowการข้ามargจำนวนหน้าต่างก่อนที่จะเลื่อน การsave-selected-windowทำให้มั่นใจว่าโฟกัสจะกลับสู่หน้าต่างเดิม เอกสารประกอบของother-windowสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขตัวอย่างนี้เพื่อให้เหมาะกับพฤติกรรมของคุณ

หรือเพียงแค่สมมติว่าโฟกัสบนหน้าต่าง 3 วิธีการตั้งค่าother-windowให้ชี้ไปที่หน้าต่าง 2

อีกครั้งใช้prefix-argในขณะที่เมื่อโทรC-3 C-x o other-windowหมายเลขจริงที่จะให้จะแตกต่างกันไปตามลำดับที่คุณแยกและจะไม่เปลี่ยนแปลงตราบใดที่คุณไม่ได้สร้างหน้าต่างใหม่ คุณสามารถใช้แพ็คเกจความสะดวกสบายเช่นwindow-numberหรือace-windowจาก MELPA เพื่อสลับหน้าต่างที่เลือกอย่างรวดเร็ว


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

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