ฉันต้องรู้อะไรบ้างเพื่อใช้ GNU Screen อย่างถูกต้อง? [ปิด]


106

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

มันจะยอดเยี่ยมมาก


1
มีคำตอบที่ดีสำหรับสิ่งนี้เช่นกันที่นี่: stackoverflow.com/questions/70661/what-is-gnu-screen
คริส

ใครบางคนได้โพสต์คำถามที่คล้ายกันนี้ในเซิร์ฟเวอร์ผิดพลาด
Vagnerr

ถ้ามีคนเป็นเพียงการเริ่มต้นด้วยและมีเวลาที่ยากลำบากกับหน้าจอ, พวกเขาอาจต้องการที่จะตรวจสอบทางเลือกtmux
Christopher Bottoms

คำตอบ:


93

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

^A ^W - window list, where am I
^A ^C - create new window
^A space - next window
^A p - previous window
^A ^A - switch to previous screen (toggle)
^A [0-9] - go to window [0-9]
^A esc - copy mode, which I use for scrollback

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


1
^ A k ควรถูกเพิ่มในรายการเพื่อปิดหน้าต่าง
LéoLéopold Hertz 준영

7
ฉันไม่ใช้ ^ A k เพราะมีโอกาสที่จะตั้งใจฆ่ามากกว่าที่ฉันตั้งใจไว้ แต่ฉันแค่ออกจากเชลล์ในหน้าต่างโดยใช้ ^ D (หรือexit) หน้าต่างหน้าจอจะปิดโดยอัตโนมัติหลังจากออกจากเชลล์สุดท้ายในหน้าต่าง
Greg Hewgill

9
"^ A esc - โหมดคัดลอกซึ่งฉันใช้สำหรับเลื่อนกลับ" คุณเป็นพระเจ้าในหมู่มนุษย์ครับ
Rob Howard

4
^ A [เหมือนกันทุกประการ
atx

ขอบคุณสำหรับเคล็ดลับ ^ A ^ D ... ฉันติดขัดและไม่สามารถกลับไปที่เซสชั่นของฉันได้ ในกรณีนี้จะช่วยคนที่ฉันเขียนบทความในขณะที่กลับมาซึ่งอธิบายพื้นฐานของหน้าจอเช่นนี้ แต่มีเทคนิคเพิ่มเติมเล็กน้อยgeekpad.ca/blog/post/…
Patrick Forget

36

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

[roel@roel ~]$ cat .screenrc
# Here comes the pain...
caption always "%{=b dw}:%{-b dw}:%{=b dk}[ %{-b dw}%{-b dg}$USER%{-b dw}@%{-b dg}%H %{=b dk}] [ %= %?%{-b dg}%-Lw%?%{+b dk}(%{+b dw}%n:%t%{+b dk})%?(%u)%?%{-b dw}%?%{-b dg}%+Lw%? %{=b dk}]%{-b dw}:%{+b dw}:"

backtick 2 5 5 $HOME/scripts/meminfo
hardstatus alwayslastline "%{+b dw}:%{-b dw}:%{+b dk}[%{-b dg} %0C:%s%a %{=b dk}]-[   %{-b dw}Load%{+b dk}:%{-b dg}%l %{+b dk}] [%{-b dg}%2`%{+b dk}] %=[ %{-b dg}%1`%{=b dk} ]%{-b dw}:%{+b dw}:%<"

sorendition "-b dw"
[roel@roel ~]$ cat ~/scripts/meminfo
#!/bin/sh
RAM=`cat /proc/meminfo | grep "MemFree" | awk -F" " '{print $2}'`
SWAP=`cat /proc/meminfo | grep "SwapFree" | awk -F" " '{print $2}'`
echo -n "${RAM}kb/ram ${SWAP}kb/swap"
[roel@roel ~]$

3
ตรวจสอบ byobu (หน้าจอโปรไฟล์) ด้วย: launchpad.net/byobu
Drew Stephens

นี่มันวิเศษมากขอบคุณ ฉันกำลังดิ้นรนเพื่อหาว่าเกิดอะไรขึ้นเมื่อฉันพยายามแยกขั้วของฉัน ฉันไม่รู้ว่าฉันต้องเรียกใช้หน้าจอก่อนเพื่อให้คำสั่งใด ๆ เหล่านี้ทำงานได้ฉันรู้ว่าโง่
Ogaday

30

Ctrl+ A? - แสดงหน้าจอวิธีใช้!


ฉันเห็นด้วยอย่างยิ่งกับเรื่องนี้ สิ่งนี้มีประโยชน์มากกว่าคำตอบอื่น ๆ เนื่องจากคุณสามารถหักคำสั่งอื่น ๆ ออกได้ แต่คุณไม่สามารถทำได้ในทางกลับกัน นอกจากนี้ยังง่ายกว่ามากที่จะจำสิ่งนี้
LéoLéopold Hertz 준영

26

หากเพื่อนของคุณมีนิสัยชอบกด^Aเพื่อไปที่จุดเริ่มต้นของบรรทัดใน Bash เขา / เธอจะต้องประหลาดใจเนื่องจาก^Aการผูกแป้นคำสั่งหน้าจอ โดยปกติแล้วฉันจะจบลงด้วยหน้าจอที่ค้างอาจเป็นเพราะปุ่มสุ่มบางปุ่มที่ฉันกดหลังจากนั้น^A :-)

ในกรณีเหล่านั้นฉันลอง

^A s และ ^A qบล็อก / ปลดบล็อกการเลื่อนเทอร์มินัล

เพื่อแก้ไขปัญหานั้น ^A aเพื่อไปยังจุดเริ่มต้นของหน้าจอสายภายในที่ลำดับที่สำคัญคือ


1
การเปลี่ยนตัวอักษร Escape จาก ^ A เป็นอย่างอื่นทำได้ง่าย ฉันใส่รายละเอียดในคำตอบของฉันแล้ว
Andrew Johnson

3
+1 + 1 + 1 ^ A s ... ขอบคุณ ... หน้าจอล็อก :)
Yuji 'Tomita' Tomita

1
@agnul +1 สำหรับ^ Aฉันเป็นผู้ใช้ ^ A ในเซสชันทุบตีปกติและฉันไม่สามารถใช้ในเซสชันหน้าจอได้ ขอบคุณสำหรับเคล็ดลับดีๆ :)
icasimpan

ขอบคุณคุณ 100 ครั้งที่บอกวิธีทำให้ ctrl A ทำงานภายในหน้าจอ มองหาสิ่งนี้มาตลอดชีวิต
user674669

กรณี 'A' และ 'a' มีความละเอียดอ่อนที่นี่หรือไม่
Aditya MP

12

คุณสามารถทำการแมปคีย์ Escape ใหม่จากCtrl+ Aให้เป็นคีย์อื่นที่คุณเลือกได้ดังนั้นหากคุณใช้เพื่ออย่างอื่นเช่นไปที่จุดเริ่มต้นของบรรทัดใน bash คุณเพียงแค่ต้องเพิ่มบรรทัดใน ~ / ของคุณ ไฟล์ screenrc ในการทำให้เป็น ^ b หรือ ^ B ให้ใช้:

escape ^bB

จากบรรทัดคำสั่งใช้ชื่อเซสชันเพื่อควบคุมหลายเซสชัน ฉันใช้หนึ่งเซสชันต่องานแต่ละงานมีหลายแท็บ:

  screen -ls # แสดงเซสชันหน้าจอปัจจุบันของคุณ
  screen -S <name> # สร้างเซสชันหน้าจอใหม่ที่เรียกว่าชื่อ
  screen -r <name> # เชื่อมต่อกับเซสชันหน้าจอที่มีชื่อ

เมื่อใช้หน้าจอคุณต้องการเพียงไม่กี่คำสั่ง:

  ^ A c สร้างเชลล์ใหม่
  ^ A [0-9] สลับเชลล์
  ^ A k ฆ่าเชลล์ปัจจุบัน
  ^ A d ตัดการเชื่อมต่อจากหน้าจอ
  ^ ก? แสดงวิธีใช้

การอ้างอิงอย่างรวดเร็วที่ดีสามารถพบได้ที่นี่ เป็นมูลค่าการบุ๊กมาร์ก


ฉันใช้เซสชันหน้าจอที่ซ้อนกัน ฉันเริ่มต้นด้านนอกด้วยscreen -e^ooดังนั้นฉันจึงสามารถใช้ Ctrl + O สำหรับสิ่งนั้นจากนั้นเริ่มต้นภายในด้วยscreen -mเพื่อเริ่มเซสชันใหม่
staticsan

1
คุณสามารถเปลี่ยนปุ่มหลบหนีได้ทันที ในเซสชันหน้าจอที่กำลังทำงานอยู่ให้พิมพ์^A :ตาม\Bbด้วย Enter เพื่อตั้งค่าแป้น Escape เป็น ^ B โดยทั่วไป^A :ให้คุณประเมินคำสั่งที่คุณ.screenrcเข้าใจ
malana

8

เคล็ดลับบางประการสำหรับผู้ที่คุ้นเคยกับหน้าจอ sorta แต่ผู้ที่มักจะจำสิ่งที่อ่านใน man page ไม่ได้:

  • ctrlในการเปลี่ยนชื่อของหน้าต่างหน้าจอเป็นเรื่องง่ายมาก: A shift+ A+
  • คุณพลาดข้อความสุดท้ายจากหน้าจอหรือไม่? ctrl+ a ctrl+ mจะแสดงอีกครั้งสำหรับคุณ
  • หากคุณต้องการเรียกใช้บางสิ่งบางอย่าง (เช่นการปรับแต่งไฟล์) และมีหน้าจอบอกคุณเมื่อมีการเปลี่ยนแปลงให้ใช้ctrl+ A shift+ mบนหน้าต่างเป้าหมาย คำเตือน: จะแจ้งให้คุณทราบหากมีอะไรเปลี่ยนแปลง
  • ต้องการเลือก window 15 โดยตรงหรือไม่? ลองใช้สิ่งเหล่านี้ใน.screenrcไฟล์ของคุณ:
bind  ! select 11
bind  @ select 12
bind \# select 13
bind  $ select 14
bind  % select 15
bind \^ select 16
bind  & select 17
bind  * select 18
bind  ( select 19
bind  ) select 10

ที่กำหนดctrl+ a shift+ 0 through 9สำหรับ windows 10 ถึง 19


7

Ctrl+ Aเป็นคำสั่งพื้นฐาน

Ctrl+ A N= ไปที่หน้าจอ *** N *** ext

Ctrl+ A P= ไปที่หน้าจอรีเฟรช *** P ***

Ctrl+ A C= *** C *** สร้างหน้าจอใหม่

Ctrl+ A D= *** D *** เปิดหน้าจอของคุณ


6

http://www.debian-administration.org/articles/34

ฉันเขียนว่าสองสามปีที่แล้ว แต่ก็ยังเป็นบทนำที่ดีที่ได้รับการตอบรับในเชิงบวกมากมาย


ลิงก์ (อย่างมีประสิทธิภาพ) เสีย:$VAR1 = \'Can\'t connect to local MySQL server through socket \'/var/run/mysqld/mysqld.sock\' (111 "Connection refused") at ../lib/Singleton/DBI.pm line 95. ';
Peter Mortensen

6

ฉัน "ต้อง" เพิ่มสิ่งนี้: เพิ่ม

bind s

ของคุณ.screenrcถ้าคุณ - เหมือนฉัน - เคยใช้แยกหน้าต่างเหมือนC-a Sแยกหน้าต่างจริง แต่C-a sค้าง ดังนั้นฉันจึงปิดการใช้งานทางลัดตรึง


2
^-Qจะไม่หยุดทำงานหากคุณโดน^-S
เพลโต

คุณใช่ @Plato ฉันยังคงทำงานในสภาพแวดล้อมกับผู้ใช้ซึ่งจะไม่จดจำทางลัดเกือบทั้งหมด ... ฉันต้องปิดการใช้งาน
Zsolt Botykai

NP ฉันเพิ่งพบหัวข้อนี้ก่อนและค้นหา 'หยุด' และไม่พบสิ่งที่ฉันกำลังมองหา
เพลโต

6

Ctrl+ aเป็นกุญแจพิเศษ

Ctrl+ a d- [d] etach ออกจากโปรแกรม (irssi?) ในพื้นหลังกลับบ้าน

Ctrl+ a c[c] สร้างหน้าต่างใหม่ Ctrl+ a 0-9สลับไปมาระหว่างหน้าต่างตามหมายเลข

screen -r - กลับไปที่เซสชันแยก

ซึ่งครอบคลุม 90% ของกรณีการใช้งาน อย่าพยายามแสดงฟังก์ชันการทำงานทั้งหมดพร้อมกัน


แม้ว่าเมื่อฉันรู้แรกที่เกี่ยวกับscreenผมสับสนเกี่ยวกับสิ่งที่มันจริงหมายถึงการถอดและอีกครั้งแนบหน้าจอ ข้อความอ้างอิง : "... คุณสามารถทำงานเป็นเวลานานในคอนโซลแยกต่างหาก (เช่น ssh บนเครื่อง remmote, เซสชัน IRC, ... ) บนเครื่องที่กำหนด, แยกออกจากเซสชัน, ย้ายจากตำแหน่งทางกายภาพหนึ่งไปยังอีกที่หนึ่ง, เชื่อมต่อกับ เครื่องผ่าน ssh และแนบเข้ากับเซสชันหน้าจออีกครั้งเพื่อให้ทำงานต่อไป "
.

4

ไม่จำเป็นจริงๆที่ไม่เกี่ยวข้องกับหน้าจอ แต่การเปิดใช้งาน 256 สีในเทอร์มินัลของฉันหน้าจอ GNU และ Vimช่วยปรับปรุงประสบการณ์การใช้งานหน้าจอของฉันครั้งใหญ่ (โดยเฉพาะอย่างยิ่งเมื่อฉันเขียนโค้ดใน Vim ประมาณ 8 ชั่วโมงต่อวัน - มีบางเฉดสีที่เหมาะกับดวงตา)


ขอบคุณ! นั่นรบกวนฉันมาระยะหนึ่งแล้ว
Dan Goldstein

3

การแก้ไขครั้งแรกที่ฉันทำกับ. screenrc คือการเปลี่ยนคำสั่ง escape ไม่ต่างจากคุณหลาย ๆ คนฉันไม่ชอบลำดับ Ctrl-A ที่เป็นค่าเริ่มต้นเนื่องจากมีการรบกวนฟังก์ชันพื้นฐานนั้นในเกือบทุกบริบท ในไฟล์. screenrc ของฉันฉันเพิ่ม:

หนี `จ

นั่นคือ backtick-e

สิ่งนี้ทำให้ฉันสามารถใช้ backtick เป็นแป้น Escape ได้ (เช่นสร้างหน้าจอใหม่ฉันกด backtick-c, detach คือ backtick-d, backtick-? is help, backtick-backtick คือหน้าจอก่อนหน้าเป็นต้น) วิธีเดียวที่รบกวน (และฉันต้องเลิกนิสัยตัวเอง) คือใช้ backtick บนบรรทัดคำสั่งเพื่อจับภาพผลลัพธ์การดำเนินการหรือวางอะไรก็ได้ที่มี backtick ก่อนหน้านี้ฉันได้ปรับเปลี่ยนนิสัยของฉันโดยใช้หลักการ BASH $ (คำสั่ง) สำหรับอย่างหลังฉันมักจะเปิด xterm อื่นหรือแยกออกจากหน้าจอจากนั้นวางเนื้อหาที่มีเครื่องหมายแบ็คทิก สุดท้ายถ้าฉันต้องการแทรก backtick ตามตัวอักษรฉันเพียงแค่กด backtick-e


ยอดเยี่ยม ฉันใช้ backticks ตลอดเวลาแม้ว่าฉันรู้ว่าฉันควรใช้ $ (... ) ดังนั้นตอนนี้ฉันเดาว่าฉันอาจต้องเปลี่ยนวิธีการของฉัน แบ็คทิกนั้นไม่เป็นที่ต้องการเล็กน้อย แต่ดีที่มีคีย์เดียวโดยไม่ต้องใช้ตัวปรับแต่ง แต่ทำไมต้องเป็น "e" และคุณจำได้อย่างไร?
iconoclast

ฉันเพิ่งทดสอบ 'Escape' และมันใช้งานได้ดีและดูเหมือนจะจำง่ายกว่า หากคุณตีแบ็คทิกและไม่ได้รับสิ่งที่คุณคาดหวังให้กดอีกครั้ง
iconoclast

ฉันทำไปแล้ว แต่มีวิธีพิมพ์แบ็คทิกขณะอยู่หน้าจอจริงหรือไม่ บางครั้งก็จำเป็นต้องทำเช่นนี้และฉันก็เกลียดที่จะต้องแยกออกเพื่อทำมัน ...
Guillochon

@Guillouchon: ความคิดเห็นก่อนหน้านี้อธิบายอย่างนั้น
tripleee

3

มีงานที่น่าสนใจบางอย่างที่ต้องทำในการตั้งค่าหน้าจอ GNU ที่ดีโดยค่าเริ่มต้นใน Ubuntu Server เวอร์ชันถัดไปซึ่งรวมถึงการใช้ด้านล่างของหน้าจอเพื่อแสดงหน้าต่างทั้งหมดรวมถึงรายละเอียดเครื่องที่มีประโยชน์อื่น ๆ (เช่นจำนวนการอัปเดต พร้อมใช้งานและเครื่องต้องรีบูตหรือไม่) คุณสามารถคว้า.screenrcและปรับแต่งตามความต้องการของคุณ

คำสั่งที่มีประโยชน์ที่สุดที่ฉันมี.screenrcมีดังต่อไปนี้:

shelltitle "$ |bash" # Make screen assign window titles automatically
hardstatus alwayslastline "%w" # Show all window titles at bottom line of term

ด้วยวิธีนี้ฉันมักจะรู้ว่าหน้าต่างใดเปิดอยู่และสิ่งที่กำลังทำงานอยู่ในขณะนั้นด้วย


3

ฉันใช้สิ่งต่อไปนี้สำหรับssh:

#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command

wd=`pwd`
cmd=$1
shift

# We can tell if we are running inside screen by looking
# for the STY environment variable.  If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.

if [ -z "$STY" ]; then
        $cmd $*
else
        # Screen needs to change directory so that
        # relative file names are resolved correctly.
        screen -X chdir $wd

        # Ask screen to run the command
        if [ $cmd == "ssh" ]; then
                screen -X screen -t ""${1##*@}"" $cmd $*
        else
                screen -X screen -t "$cmd $*" $cmd $*
        fi
fi

จากนั้นฉันตั้งค่านามแฝง bash ต่อไปนี้:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

จะเปิดหน้าจอใหม่สำหรับนามแฝงด้านบนและ iff โดยใช้ ssh จะเปลี่ยนชื่อหน้าจอด้วยชื่อโฮสต์ ssh


2

ฉันต้องการตั้งค่าเซสชันหน้าจอด้วยชื่อที่สื่อความหมายสำหรับหน้าต่าง ^ a A จะให้คุณตั้งชื่อหน้าต่างปัจจุบันและ ^ a "จะให้รายชื่อหน้าต่างของคุณเมื่อเสร็จแล้วให้ถอดหน้าจอที่มีโฆษณา ^ ออกแล้วติดใหม่ด้วยหน้าจอ -R


1

ฉันชอบที่จะใช้ screen -d -RRเพื่อสร้าง / แนบไปยังหน้าจอที่กำหนดโดยอัตโนมัติ ฉันสร้างฟังก์ชันทุบตีเพื่อให้ง่ายขึ้น ...

function mkscreen
{
    local add=n

    if [ "$1" == '-a' ]; then
        add=y
        shift;
    fi

    local name=$1;
    shift;
    local command="$*";

    if [ -z "$name" -o -z "$command" ]; then
        echo 'Usage: mkscreen [ -a ] name command

    -a          Add to .bashrc.' 1>&2;
        return 1;
    fi

    if [ $add == y ]; then
        echo "mkscreen $name $command" >> $HOME/.bashrc;
    fi

    alias $name="/usr/bin/screen -d -RR -S $name $command";

    return 0;
}

function rmscreen
{
    local delete=n

    if [ "$1" == '-d' ]; then
        delete=y
        shift;
    fi

    local name=$1;

    if [ -z "$name" ]; then
        echo 'Usage: rmscreen [ -d ] name

    -d          Delete from .bashrc.' 1>&2;
        return 1;
    fi

    if [ $delete == y ]; then
        sed -i -r "/^mkscreen $name .*/d" $HOME/.bashrc;
    fi

    unalias $name;

    return 0;
}

พวกเขาสร้างนามแฝงให้ /usr/bin/screen -d -RR -S $name $commandพวกเขาสร้างชื่อแทนไปตัวอย่างเช่นฉันชอบใช้ irssi ในเซสชันหน้าจอดังนั้นใน. bashrc ของฉัน (ภายใต้ฟังก์ชันเหล่านั้น) ฉันมี:

mkscreen irc /usr/bin/irssi

จากนั้นฉันสามารถพิมพ์ircเทอร์มินัลเพื่อเข้าสู่ irssi หากยังไม่มีหน้าจอ 'irc' ระบบจะสร้างและ / usr / bin / irssi ถูกเรียกใช้จากหน้าจอนั้น (แน่นอนว่าเชื่อมต่อโดยอัตโนมัติ) ถ้ามันทำงานอยู่แล้วฉันก็แค่แนบเข้าไปใหม่โดยบังคับให้ถอดอินสแตนซ์อื่น ๆ ที่ติดอยู่กับมันออก มันค่อนข้างดี

อีกตัวอย่างหนึ่งคือการสร้างนามแฝงหน้าจอชั่วคราวสำหรับ perldocs เมื่อฉันเจอ:

mkscreen perlipc perldoc perlipc
perlipc # Start reading the perldoc, ^A d to detach.
...
# Later, when I'm done reading it, or at least finished
# with the alias, I remove it.
rmscreen perlipc 

ตัวเลือก -a (ต้องเป็นอาร์กิวเมนต์แรก) ต่อท้ายนามแฝงของหน้าจอเป็น. bashrc (ดังนั้นจึงเป็นแบบถาวร) และ -d จะลบออก (สิ่งเหล่านี้อาจเป็นอันตรายได้ดังนั้นโปรดใช้ความเสี่ยงเอง) xD

ผนวก:

bash-ism อีกอย่างที่ฉันคิดว่าสะดวกเมื่อทำงานกับหน้าจอเป็นจำนวนมาก:

alias sls='/usr/bin/screen -ls'

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



0

Ctrl+ Aเป็นตัวละครพิเศษที่ยอดเยี่ยมสำหรับชาว Unix แต่ถ้าคุณใช้หน้าจอเพื่อพูดคุยกับOpenVMSไม่สามารถ ^ A จะทำให้คุณหัวล้านก่อนเวลาอันควร

ในVMSหากคุณกำลังแก้ไขคำสั่งDCLก่อนที่จะดำเนินการจากบัฟเฟอร์ประวัติโหมดแทรกจะปิดอยู่ (ต้องมีสาเหตุบางประการที่ฉันจะไม่เข้าที่นี่) ... เพื่อเปิดใช้งานเพื่อให้คุณไม่ อย่าพิมพ์คำสั่งของคุณมากเกินไปแทนที่จะเว้นวรรคคุณต้องกด `^ A


ฉันใช้screen -e ^Llด้วยเหตุผลที่คล้ายกัน ฉันไม่สามารถยกเลิกการเรียนรู้ที่จะพิมพ์ ctrl-A เพื่อไปที่จุดเริ่มต้นของบรรทัดใน Emacs โชคดีที่ ctrl-L เป็นการกดแป้นพิมพ์ที่ฉันไม่ค่อยต้องการและ IMHO ก็เชื่อมต่อได้ดีกับความหมายทั่วไป (วาดใหม่ / ล้างหน้าจอ)
tripleee

@tripleee: My .screenrchas escape ^@^@ซึ่งใช้อักขระ null แทน control-A ในระบบส่วนใหญ่คุณสามารถป้อนอักขระ null เป็น control-space ซึ่งพิมพ์ได้ง่ายมาก (ฉันมีเซสชันหน้าจอซ้อนกันที่ทำงานอยู่ภายในหน้าต่างในเซสชันหลักของฉันสำหรับสิ่งนั้นที่ฉันมีescape ^]^])
Keith Thompson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.