หน้าจอ Bash vs. Gnu: แทนที่ Ctrl-A ด้วย Ctrl-Shift-A


44

ฉันเป็นผู้ใช้ใหม่ในหน้าจอ GNU ฉันใช้ Bash มานานแล้วและฉันต้องการลองใช้ GNU Screen

ดังที่คุณทราบ GNU Screen ใช้ 'Ca' (Control-A) เป็นอักขระคำสั่ง ปัญหาคือสิ่งนี้รบกวนคุณสมบัติการแก้ไขสายใน Bash (และ GNU Readline) เนื่องจากการควบคุม A ใน Bash จะย้ายไปที่จุดเริ่มต้นของบรรทัด "

ฉันรู้ว่าฉันสามารถตั้งค่าอักขระคำสั่งเป็นลำดับคีย์อื่นเช่น "^ Q" หรือ "` `" (Backtick) แต่ฉันมีปัญหาในการค้นหาลำดับคีย์อื่นที่ไม่ได้ใช้งานอยู่ (^ Q ใช้โดยเทอร์มินัล , backtick ใช้เมื่อเขียนเชลล์สคริปต์) ดูเหมือนว่าอักขระคำสั่งอาจมีความยาวหนึ่งหรือสองอักขระเท่านั้น ฉันสามารถตั้งค่าตัวควบคุมหน้าจอของ GNU ให้เป็นแบบ "Control-Shift-A" ได้หรือไม่?

(ฉันไม่สามารถใช้ไฮเปอร์ลิงก์มากกว่าหนึ่งลิงก์ได้ดังนั้นฉันจึงไม่สามารถลิงก์ไปยังเอกสาร Bash ได้)


5
เพื่อไม่ให้สับสนเมื่อใช้screenกับระบบอื่นคุณอาจดีที่สุดที่จะยึดติดกับปุ่มลัดเริ่มต้นหรืออย่างน้อยก็ต้องเรียนรู้ก่อน ^A aโดยค่าเริ่มต้นจะส่ง^Aคำสั่งผสมคีย์ปกติ มันไม่สะดวกนักถ้าคุณใช้คอมโบนั้นมาก ฉันมักจะใช้HOMEกุญแจแทนเพราะสิ่งนี้ แต่นั่นก็ไม่ได้ผลเช่นกัน
intuited

ไม่มีความรักที่นี่สำหรับ Ctrl-space ใช้งานได้ดี
Wildcard

คำตอบ:


18

ปัญหาของControl- Shift- Aคือโปรแกรมจำลอง terminal ส่วนใหญ่จะไม่ส่งรหัสที่แตกต่างจากรหัสที่ส่งโดยControl- Aดังนั้นจะไม่มีวิธีใดที่หน้าจอจะบอกความแตกต่าง

คุณอาจสามารถใช้ Cq ได้หากคุณstty -ixonปิดใช้งาน“ การควบคุมการไหลของซอฟต์แวร์” บน tty ฉันมักจะทำสิ่งนี้เพื่อให้ฉันสามารถใช้ Cs เพื่อค้นหาในบรรทัดคำสั่ง

คุณอาจพิจารณา C- ^ เนื่องจากดูเหมือนว่าไม่ได้ผูกไว้ มันคือControl- Shift- 6บนเค้าโครงแป้นพิมพ์ของสหรัฐอเมริกา แต่อาจพิมพ์บนเค้าโครงอื่นได้ยาก

คนส่วนใหญ่ไม่เคยใช้อักขระควบคุม tty C- \ เพื่อส่ง SIGQUIT หากต้องการใช้ให้ปิดการใช้งานฟังก์ชัน tty ด้วยด้วยstty quit undefและผูกเป็นคีย์คำนำหน้าของคุณ นี้เป็นบิต แต่มีความเสี่ยงเพราะถ้าคุณตี C- \ บน TTY ที่สำคัญเลิกไม่ได้รับการปิดการใช้งานกับsttyคุณอาจจะฆ่ากระบวนการเบื้องหน้าแทนการเปิดใช้งานหน้าจอ

ฉันเปลี่ยนไปเป็นtmuxนานมาแล้ว เริ่มต้นของมันคือ Cb เพราะมันได้รับการพัฒนาภายใต้หน้าจอและไม่ได้ยุ่งเกี่ยวกับหน้าจอของการเริ่มต้น ฉันพบว่า Cb ทำงานได้ดีสำหรับฉัน (ฉันมักจะใช้ปุ่มลูกศรสำหรับการเคลื่อนไหวของตัวละครเดี่ยวในบรรทัดคำสั่งเชลล์ - แม้ว่าฉันจะใช้ Mb และ Mf เพื่อย้ายโดยคำ)

อนึ่งผู้เขียนtmuxใช้ Ca ในเซสชันหลักของเขาและพิมพ์ Ca สองครั้งเสมอ (ไม่ว่าจะอยู่ในเซสชันtmuxหรือไม่ก็ตาม) หากคุณยินดีที่จะนำมาใช้นิสัยนี้ดูเหมือนว่าการประนีประนอมที่ดีเนื่องจาก Ca ที่สองควรจะไม่มีการ op ในบริบทการแก้ไขเหมือน Emacs ส่วนใหญ่ มันจะไม่ทำงานถ้าหากคุณมักจะใช้โปรแกรม / บริบทนอกหน้าจอซึ่ง Ca ตัวที่สองจะไม่เป็นแบบไม่มี op

โดยค่าเริ่มต้น Ca Ca ถูกผูกไว้กับคนอื่น ๆคำสั่ง (เปลี่ยนไปเมื่อเร็ว ๆ นี้หน้าจอใช้งานมากที่สุด) ในหน้าจอ ในการให้ Ca Ca ส่ง Ca จริงและให้ Ca windows เปลี่ยนให้ทำดังต่อไปนี้.screenrc:

escape ^A^A
bind o other

2
มันฟังดูดีแล้วฉันก็รู้ว่าในหน้าจอ GNU การพิมพ์ Ca สองครั้งจะสลับไปที่หน้าต่างที่แสดงก่อนหน้านี้ บางทีฉันสามารถแมป "Ca Ca" กับสิ่งอื่นได้แม้ว่าฉันไม่แน่ใจว่าจะทำเช่นนั้นได้อย่างไร (ดูเหมือนว่าฉันต้องระบุ 'escape xy' หรือ 'meta' สำหรับสิ่งนี้) ดูgnu.org/software/screen/ manual / screen.html # Other-Window
Stefan Lasiewski

1
@Stefan Lasiewski: โอ๊ะฉันลืมไปว่า Ca Ca ไม่ส่ง Ca โดยปริยาย ดูส่วนท้ายของคำตอบสำหรับการตั้งค่าเล็กน้อยที่ทำให้ Ca Ca ส่ง Ca และ Ca o ไปยังหน้าต่างก่อนหน้า
Chris Johnsen

ใช้งานได้ดี! Ca Ca จะส่ง Ca จริงไปยังเชลล์ที่อยู่ข้างใต้และ Ca o 'จะสลับไปที่หน้าต่าง' other ' ในการส่ง 'Ca' ไปยัง Bash ให้กด 'Ca' สองครั้ง นี่ควรเป็นแบบไม่ใช้งานนอกหน้าจอและไม่ควรทำให้เกิดปัญหา
Stefan Lasiewski

41

ไม่จำเป็นต้องมีวิธีแก้ปัญหา
เพื่อย้ายไปยังจุดเริ่มต้นของบรรทัดในขณะที่ใช้หน้าจอในทุบตีใช้

Control- A(ปล่อยแล้ว)A


โดยทั่วไปหากมีอักขระควบคุมหน้าจอขัดแย้งกับทางลัด bash ทางลัดของ bash แรกControlจะถูกแทนที่ด้วยControl-A

เช่นเดียวกันกับทางลัดแก้ไขบรรทัดอื่น ๆ


ขอบคุณฉันไม่ได้ตอนนี้แม้ว่ามันจะง่าย แน่นอนไม่จำเป็นต้องกำหนดค่าอะไรอีก ฉันชอบคำตอบของคุณดีที่สุด
harald

+1 ty - นี่คือตัวเลือกที่ดีที่สุด สิ่งที่ตลกคือในขณะที่พยายามทำสิ่งนี้ฉันไปที่ Ca Ca โดยบังเอิญและพบอีกคำสั่งผสมที่ยอดเยี่ยม
kfmfe04

3

ฉันใช้ C- \ สำหรับหน้าจอและฉันไม่สามารถแนะนำได้เพียงพอ คุณอาจพบคำจำกัดความที่สำคัญอื่น ๆ เกี่ยวกับอุบัติเหตุ นั่นคือสิ่งที่ฉันชอบเกี่ยวกับมัน


3

ฉันใช้สิ่งนี้screenrc

escape ^bb

ตัวอย่าง: หากต้องการแยกคุณพิมพ์ ctrl-b d


0

ฉันใช้ ctrl-_ (ซึ่งสามารถผลิตได้โดย ctrl + 7 และโดยปกติ ctrl + /) พร้อมกับหน้าจอ / tmux


0

ฉันใช้ ctrl-z เป็นส่วนใหญ่ แต่ก็ใช้ ctrl-x สำหรับบางคนด้วย ฉันไม่ได้ใช้ 'หยุด' การขัดจังหวะขนาดนั้น แต่เมื่อจำเป็นฉันสามารถพิมพ์ ^ zz ได้ สิ่งนี้ยังช่วยให้ฉันเริ่มเซสชันหน้าจอรองบนเซิร์ฟเวอร์ระยะไกลที่ใช้ ctrl-a เริ่มต้น และถ้าฉันเริ่มเซสชันที่สาม (บนเซิร์ฟเวอร์ที่สาม) ดังนั้นฉันสามารถใช้ ctrl-x Ctrl-x เป็นฟังก์ชั่นล็อคหน้าจอซึ่งในหลาย ๆ สภาพแวดล้อมนั้นไม่ใช่สิ่งที่ปกติ (เนื่องจากหน้าจอมักจะทำงานภายในเทอร์มินัลอีมูเลเตอร์)

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