วิธีคงรูปแบบหน้าจอ `gnu 'หลังจากรีสตาร์ท


13

ฉันใช้ตัวscreenแบ่งเป็น 3 ส่วนด้วยเสียงเรียกเข้าทางซ้ายและอีกสองหน้าจอแยกตามแนวนอนด้านขวา :layout save my_layout_nameฉันรู้ว่าเมื่อพลัดพรากจากหน้าจอผมสามารถบันทึกรูปแบบที่มี

ฉันมีlayout autosave onอยู่ใน.screenrcไฟล์แล้ว แต่นั่นไม่ได้ช่วยแก้ไขปัญหาของฉัน

ฉันจะยังคงเค้าโครงของหน้าจอระหว่างเซสชันเทอร์มินัลที่แตกต่างกันและหลังจากที่พีซีรีสตาร์ทได้อย่างไร หรืออาจเป็นการแก้ปัญหามีวิธีเรียกใช้หน้าจอ (พารามิเตอร์) ซึ่งแยกมันตั้งค่า bash บนทุกหน้าต่างและบันทึกเค้าโครงหรือไม่

คำตอบ:


13

เค้าโครงเริ่มต้นสำหรับหน้าจอใหม่

จัดการภูมิภาคของคุณจากนั้นเรียกใช้รหัสภายในหน้าจอ :

  • หากต้องการบันทึกเค้าโครงปัจจุบันของคุณในไฟล์.screen_layout:

    rm -f $ HOME / .screen_layout
    ดัมพ์โครงร่างหน้าจอ -X .screen_layout
    
  • วิธีทำให้การโหลดอัตโนมัติพร้อมการบันทึกโครงร่าง:

    echo source .screen_layout >> $ HOME / .screenrc
    รูปแบบ echo บันทึก def >> $ HOME / .screenrc
    

มันทำงานอย่างไร

  1. screenคุณพิมพ์
  2. อ่านหน้าจอ$HOME/.screenrc:
  3. source .screen_layout- อ่านและดำเนินการคำสั่งจาก $HOME/.screen_layout
    ภูมิภาคที่สร้างขึ้นในขณะนี้
  4. layout save def- บันทึกภูมิภาคปัจจุบันเป็นเลย์เอาต์เพื่อเก็บไว้เมื่อคุณแยกออก

layout dump .screen_layout

  • ดัมพ์ ( ต่อท้าย ) เลย์เอาต์ปัจจุบันไปยังไฟล์ใน$HOMEไดเรกทอรี

screen -X command

  • เรียกใช้commandในเซสชันหน้าจอปัจจุบัน (หากดำเนินการภายใน)
    คล้ายกับctrlaตอนนั้น: command

คุณอาจ

  • ปิดใช้งานประกาศเกี่ยวกับลิขสิทธิ์เมื่อเริ่มต้น:

    echo startup_message off >> $ HOME / .screenrc
  • เพิ่ม scroll buffer (def. 100)

    echo defscrollback 1,000 >> $ HOME / .screenrc
  • เขียนของตัวเอง.screen_layout(แนวตั้ง 50% / 50% พร้อม 2 shells):

    แยก -v
    หน้าจอ -t s1
    
    โฟกัส
    หน้าจอ -t s2
    
    โฟกัส
    

คุณถูก. วิธีนี้ยังคงเค้าโครงหน้าจอโดยการทิ้งคำสั่งไปยังไฟล์จากนั้นทำซ้ำพวกเขา.screenrcมา .screen_layoutไฟล์สามารถแก้ไขได้ด้วยคำสั่งทั้งหมดจะทำงานในแต่ละครั้งที่screenมีการเรียกใช้รวมทั้งlayout save defaultในท้ายที่สุด ผมขอแนะนำให้ผู้อ่านอื่น ๆ เพื่อเพิ่มscreenหลังจากที่focusใน.screen_layoutไฟล์ที่จะได้รับการทำงานทุบตี
randunel

7

Ctrl- aจาก:นั้นlayout save default หน้าจอที่ให้นั้นเป็นรุ่นที่ใหม่กว่า (พร้อมคุณสมบัติการจัดวาง) ขอให้โชคดี

UPDATE: นี่คือไฟล์. screenrcที่จะทำการเปลี่ยนแปลงแบบถาวรพร้อมกับการเพิ่มคุณสมบัติที่ดีอื่น ๆ


ความคิดใด ๆ ที่ว่าทำไมlayout autosave onin the ใช้.screenrcงานไม่ได้? นั่นจะเป็นที่ต้องการของฉัน
spinlock

คุณพูดถูกมันไม่ทำงาน แต่ฉันได้ทดสอบ. screenrc จากที่นี่: gist.github.com/joaopizani/2718397และใช้ได้
Mir Dunaev

2

" เลย์เอาต์บันทึกอัตโนมัติบน " ใช้งานได้เฉพาะกับเลย์เอาต์ที่กำหนดชื่อไว้อย่างชัดเจนใน. screenrc

กล่าวคือถ้าคุณระบุเลย์เอาต์บางอย่างเป็น ABC ให้สลับไปที่ภายในเซสชันหน้าจอและแยกออกเค้าโครงสุดท้ายนี้จะถูกกู้คืนหลังจากที่เซสชันกลับมาทำงานต่อ

หากคุณไม่ได้ระบุเค้าโครงใด ๆ ในไฟล์กำหนดค่าคุณต้องเรียกใช้คำสั่งภายใน " รูปแบบบันทึก your_layout_name " ก่อนที่จะทำการถอดออก

นี่คือ. screenrc ที่มีเลย์เอาต์ที่กำหนดไว้ล่วงหน้าให้เลือก:

 0 — one (the only region)
 1 — two-v (the screen is splitted vertically into two regions, default layout)
 2 — two-h (the screen is splitted horizontally into two regions)
 3 — three (three regions — two in the upper part of the screen and one underneath)
 4 — four (four regions)

เค้าโครงที่กำหนดไว้ล่วงหน้า

เมื่อเลือกจากภายในหน้าจอเลย์เอาต์เหล่านี้จะถูกรักษาไว้เมื่อออกจนกว่าจะกลับมาทำงานต่อในเซสชันถัดไป (เนื่องจากคำสั่ง "การบันทึกอัตโนมัติเลย์เอาต์ตาม"

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

โดยดีฟอลต์โครงร่าง" two-v " ถูกโหลดด้วยหน้าต่างเดียวที่มี bash


นี่เป็นสิ่งที่ดีแม้ว่าฉันจะพลาดวิธีการเปลี่ยนจากเค้าโครงหนึ่งไปอีกรูปแบบหนึ่งจากนั้นก็เห็นความคิดเห็นว่าการโยงคีย์ถูกลบออก เพียงแค่ fyi - ปุ่มลัดนี้ใช้งานได้สำหรับฉัน (Ubuntu 16.04) เพื่อสลับเค้าโครง: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi

0

แหล่งอ้างอิงนี้ไม่สามารถทำได้เนื่องจากวิธีการscreenทำงาน อย่างไรก็ตามมีการแฮ็กข้อมูล โดยทั่วไปแล้วจะเดือดลงไปที่หน้าจอซ้อนภายในอีกหน้าจอหนึ่งซึ่งอาจไม่สะดวกนัก (หาคำตอบได้ที่นี่ )

หากคุณใช้หน้าจอสำหรับการแยกขั้วบนเครื่องท้องถิ่นของคุณ (ซึ่งผมสรุปจากการรีสตาร์ทเครื่องคอมพิวเตอร์ดังกล่าว), คุณอาจต้องการที่จะตรวจสอบจำลอง terminal terminatorที่เรียกว่า รองรับการแบ่งเทอร์มินัลในแนวนอนและแนวตั้ง (ซ้อนกัน) และคุณสามารถบันทึกเลย์เอาต์ที่คุณชื่นชอบเพื่อใช้งานต่อไป terminator -l <name of saved layout>จากนั้นคุณก็ใช้เทอร์มิกับตัวเลือกที่เหมาะสม:


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