การตั้งค่า. screenrc มีประโยชน์อย่างไร


54

โดยพื้นฐานแล้วฉันชอบโพสต์ด้านล่าง ฉันกำลังมองหาฟังก์ชั่นที่เพิ่มเข้ามาใน 'หน้าจอ' ของโปรแกรม อย่างน้อยต้องดูบรรทัดสุดท้ายสำหรับ 'แถบเมนู' ที่ยอดเยี่ยมที่ด้านล่างของหน้าจอเซสชัน

## gyaresu's .screenrc 2008-03-25
# http://delicious.com/search?p=screenrc

# Don't display the copyright page
startup_message off

# tab-completion flash in heading bar
vbell off

# keep scrollback n lines
defscrollback 1000

# Doesn't fix scrollback problem on xterm because if you scroll back
# all you see is the other terminals history.
# termcapinfo xterm|xterms|xs|rxvt ti@:te@

# These will let you use 
bind -c selectHighs 0 select 10 #these three commands are 
bind -c selectHighs 1 select 11 #added to the command-class
bind -c selectHighs 2 select 12 #selectHighs
bind -c selectHighs 3 select 13
bind -c selectHighs 4 select 14
bind -c selectHighs 5 select 15


bind - command -c selectHighs   #bind the hyphen to 
                                #command-class selectHighs 


screen -t rtorrent  0   rtorrent    
#screen -t tunes        1   ncmpc --host=192.168.1.4 --port=6600 #was for connecting to MPD music server.
screen -t stuff     1
screen -t irssi     2   irssi
screen -t dancing   4       
screen -t python    5   python
screen -t giantfriend   6   these_are_ssh_to_server_scripts.sh
screen -t computerrescue    7   these_are_ssh_to_server_scripts.sh
screen -t BMon      8   bmon -p eth0
screen -t htop      9   htop
screen -t hellanzb  10  hellanzb
screen -t watching  3   
#screen -t interactive.fiction  8
#screen -t hellahella   8   paster serve --daemon  /home/gyaresu/downloads/hellahella/hella.ini 

shelltitle "$ |bash"

# THIS IS THE PRETTY BIT
#change the hardstatus settings to give an window list at the bottom of the                                                                        
##screen, with the time and date and with the current window highlighted                                                                            
hardstatus             alwayslastline                                                                                                                          
#hardstatus string '%{= mK}%-Lw%{= KW}%50>%n%f* %t%{= mK}%+Lw%< %{= kG}%-=%D %d %M %Y %c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'

คำตอบ:


22

สำหรับผู้ที่ต้องการวิธีการตั้งค่าหน้าจอที่สวยงามน้อยฉันสามารถแนะนำbyobu ได้อย่างเต็มที่(เดิมเรียกว่าส่วนกำหนดค่าหน้าจอ) มันช่วยให้คุณมีชุดเริ่มต้นที่ดีของสิ่งต่าง ๆ ที่ด้านล่างของหน้าจอ - บรรทัดล่างประกอบด้วยข้อมูลสถานะที่มีประโยชน์มากมายและที่สองจากบรรทัดล่างจะมีรายการของหน้าต่างหน้าจอของคุณ ทั้งหมดนี้สามารถกำหนดค่าในเมนู ncurses ง่าย ๆ โดยกด F9

ปุ่มฟังก์ชั่นถูกแมปกับการดำเนินงานทั่วไป:

  • F2 - สร้างหน้าต่างใหม่
  • F3 - ไปที่หน้าต่างก่อนหน้า
  • F4 - ไปที่หน้าต่างถัดไป
  • F5 - โหลดโปรไฟล์ซ้ำ
  • F6 - แยกออกจากเซสชัน
  • F7 - เข้าสู่โหมดเลื่อน
  • F8 - ดูปุ่มลัดทั้งหมด
  • F9 - กำหนดค่าหน้าจอโปรไฟล์
  • F12 - ล็อคเทอร์มินัลนี้

ดูบทความนี้สำหรับการกวดวิชาและภาพหน้าจอ

Byobu อยู่ในที่เก็บ Ubuntu จาก karmic (9.10) เป็นต้นไป ในเวลาอันสั้นมันถูกเรียกว่าโปรไฟล์หน้าจอ ก่อนที่จะสามารถติดตั้งได้จากppa นี้จากนี้หน้าดาวน์โหลด มันบรรจุกันอย่างแพร่หลายสำหรับ distros ทันสมัยอื่น ๆ เช่นกัน

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


หน้าจอโปรไฟล์เป็นที่น่ากลัว ฉันจะตอบด้วยเหมือนกัน
jtimberman

12

ฉันยังใช้ชุดคำอธิบายภาพ / hardstatus บรรทัดที่เกี่ยวข้องอย่างเป็นธรรมเพื่อจำลองผลกระทบของแท็บแบบเลื่อนลง (บรรทัดคำอธิบายภาพเป็นสีเทาทึบและแท็บปัจจุบันใน hardstatus เป็นสีเดียวกัน)

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

 # don't use the hardstatus line for system messages, use reverse video instead
 # (we'll be using it for the list of tab windows - see hardstatus alwayslastline
 # below)
 hardstatus off

 # use the caption line for the computer name, load, hstatus (as set by zsh), & time
 # the caption line gets repeated for each window being displayed (using :split),
 # so we'll use color cues to differentiate the caption of the current, active
 # window, and the others.
 #    always                  - display the caption continuously.  Since
 #                              hardstatus is 'alwayslastline', it will be on the
 #                              next to last line.
 #    "%?%F"                  - if (leading '%?') this region has focus ('%F') 
 #                              (e.g. it's the only region being displayed, or,
 #                              if in split-screen mode, it's the currently active
 #                              region)
 #      "%{= Kk}"               - set the colorscheme to blac[k] on grey (bright blac[K]),
 #                                with no other effects (standout, underline, etc.)
 #    "%:"                    - otherwise ('%:' between a pair of '%?'s)
 #      "%{=u kR}"              - set the colorscheme to [R]ed on blac[k], and
 #                                underline it, but no other effects (bold, standout, etc.) 
 #    "%?"                    - end if (trailing '%?')
 #    "  %h "                 - print two spaces, tthne the [h]ardstatus of the
 #                              current tab window (as set by zsh - see zshrc) and
 #                              then another space.
 #    "%-024="                - either pad (with spaces) or truncate the previous
 #                              text so that the rest of the caption string starts
 #                              24 characters ('024') from the right ('-') edge of
 #                              the caption line.
 #                              NOTE: omitting the '0' before the '24' would pad
 #                              or truncate the text so it would be 24% from the
 #                              right.
 #    "%{+b}                  - add ('+') [b]old to the current text effects, but
 #                              don't change the current colors.
 #    " %C:%s%a %D %d %M %Y"  - print the [C]urrent time, a colon, the [s]econds,
 #                              whether it's [a]m or pm, the [D]ay name, the [d]ay
 #                              of the month, the [M]onth, and the [Y]ear.
 #                              (this takes up 24 characters, so the previous
 #                              pad/truncate command makes sure the clock doesn't
 #                              get pushed off of the caption line)
 #    "%{= dd}"               - revert to the [d]efault background and [d]efault
 #                              foreground colors, respectively, with no ('= ')
 #                              other effects.
 #  other things that might be useful later are
 #    " %H"                   - print a space, then the [H]ostname.
 #    "(%{.K}%l%{-}):"        - print a '(', then change the text color to grey
 #                              (aka bright blac[K]), and print the current system
 #                              [l]oad.  Then revert to the previous colorscheme
 #                              ('%{-}') and print a close ')' and a colon.
 #                              NOTE: the load is only updated when some other
 #                              portion of the caption string needs to be changed
 #                              (like the seconds in the clock, or if there were a
 #                              backtick command)
 #    "%0`"                   - put the output of a backtick command in the line
 #    "%-024<"                - don't pad, just truncate if the string is past 24
 #                              characters from the right edge
 #    "%-="                   - pad (with spaces) the previous text text so that
 #                              the rest of the caption string is justified
 #                              against the right edge of the screen.
 #                              NOTE: doesn't appear to truncate previous text.
 caption always           "%?%F%{= Kk}%:%{=u kR}%?  %h %-024=%{+b} %C%a %D %d %M %Y%{= db}"
 # use the hardstatus line for the window list
 #    alwayslastline      - always display the hardstatus as the last line of the
 #                          terminal
 #    "%{= kR} %-Lw"      - change to a blac[k] background with bright [R]ed text,
 #                          and print all the tab [w]indow numbers and titles in
 #                          the [L]ong format (ie with flags) upto ('-') the
 #                          current tab window
 #    "%{=b Kk} %n%f %t " - change to grey (bright blac[K]) background with
 #                          [b]old blac[k] text, with no other effects, and print
 #                          the [n]umber of the current tab window, any [f]lags it
 #                          might have, and the [t]itle of the current tab window
 #                          (as set by zsh - see zshrc).
 #                          NOTE: the color match with the caption line makes it
 #                          appear as if a 'tab' is dropping down from the caption
 #                          line, highlighting the number & title of the current
 #                          tab window.  Nifty, ain't it)
 #    "%{-}%+Lw "         - revert to the previous color scheme (red on black)
 #                          and print all the tab [w]indow numbers and titles in
 #                          the [L]ong format (ie with flags) after ('+') the
 #                          current tab window.
 #    "%=%{= dd}"         - pad all the way to the right (since there is no text
 #                          that follows this) and revert to the [d]efault
 #                          background and [d]efault foreground colors, with no
 #                          ('= ') other effects.
 hardstatus alwayslastline "%{= kR} %-Lw%{=b Kk} %n%f %t %{-}%+Lw %=%{= dd}"

ดังนั้นนี่คือการตั้งค่า zshrc ของฉันเพื่อบอกหน้าจอเกี่ยวกับสิ่งที่ฉันทำในแต่ละแท็บ

# ~/.zshrc
# if using GNU screen, let the zsh tell screen what the title and hardstatus
# of the tab window should be.
if [[ $TERM == "screen" ]]; then
  _GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^~$USER/~/"'

  # use the current user as the prefix of the current tab title (since that's
  # fairly important, and I change it fairly often)
  TAB_TITLE_PREFIX='"`'$_GET_PATH' | sed "s:..*/::"`$PROMPT_CHAR"'
  # when at the shell prompt, show a truncated version of the current path (with
  # standard ~ replacement) as the rest of the title.
  TAB_TITLE_PROMPT='$SHELL:t'
  # when running a command, show the title of the command as the rest of the
  # title (truncate to drop the path to the command)
  TAB_TITLE_EXEC='$cmd[1]:t'

  # use the current path (with standard ~ replacement) in square brackets as the
  # prefix of the tab window hardstatus.
  TAB_HARDSTATUS_PREFIX='"[`'$_GET_PATH'`] "'
  # when at the shell prompt, use the shell name (truncated to remove the path to
  # the shell) as the rest of the title
  TAB_HARDSTATUS_PROMPT='$SHELL:t'
  # when running a command, show the command name and arguments as the rest of
  # the title
  TAB_HARDSTATUS_EXEC='$cmd'

  # tell GNU screen what the tab window title ($1) and the hardstatus($2) should be
  function screen_set()
  {
    # set the tab window title (%t) for screen
    print -nR $'\033k'$1$'\033'\\\

    # set hardstatus of tab window (%h) for screen
    print -nR $'\033]0;'$2$'\a'
  }
  # called by zsh before executing a command
  function preexec()
  {
    local -a cmd; cmd=(${(z)1}) # the command string
    eval "tab_title=$TAB_TITLE_PREFIX$TAB_TITLE_EXEC"
    eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX$TAB_HARDSTATUS_EXEC"
    screen_set $tab_title $tab_hardstatus
  }
  # called by zsh before showing the prompt
  function precmd()
  {
    eval "tab_title=$TAB_TITLE_PREFIX$TAB_TITLE_PROMPT"
    eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX$TAB_HARDSTATUS_PROMPT"
    screen_set $tab_title $tab_hardstatus
  }
fi

10

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

คำวิเศษคือ:

escape ^za

1
ฉันตั้งค่าของฉันเป็น ctrl-K เพราะมันเป็นคีย์ ctrl ที่ใช้กันน้อยที่สุดในแอพที่ฉันใช้ ^ A มีประโยชน์มากเกินไปในการทุบตี / พร้อมที่จะเสียสละ
CAS

1
หากต้องการตรวจสอบสิ่งที่คุณปะทะกันคุณสามารถปรึกษาsuperuser.com/questions/120333/… (ซึ่งฉันถามในเรื่องนี้)
Hamish Downer

2
FYI, ถ้าคุณต้องการปล่อยให้ Ca เป็นคีย์ตัวควบคุม Ca a จะไปที่จุดเริ่มต้นของบรรทัด ฉันต้องใช้เวลาพอสมควรในการคิดออก
Coomer

9

ฉันมักจะมีมากกว่า 10 windows ทำงานและต้องการวิธีการเลือกพวกเขา ฉันพบวิธีกำหนดค่า Ca Shift + 0 ถึง 9 เพื่อเลือก windows 10 ถึง 19

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

สังเกตทางหนีใน # และ ^


6

ป่วยจากโปรแกรมเต็มหน้าจอเช่นเสียงเรียกเข้าที่เหลืออยู่ในบัฟเฟอร์การเลื่อนกลับหลังจากที่คุณปิดไปแล้วเหรอ? มันจะไม่ดีถ้าพวกเขาจะหายไปอย่างสมบูรณ์เหมือนกับที่พวกเขาทำเมื่อคุณไม่ได้ใช้หน้าจอ? ลองวางสิ่งนี้ลงในไฟล์ ~ / .screenrc ของคุณ ...

altscreen on

2

ฉันใช้ Ctrl + Alt + Left และ Ctrl + Alt + Right เพื่อสลับระหว่างหน้าต่างหน้าจอ สำหรับช่องสัญญาณ IRSSI ของฉันฉันใช้ Alt + Left และ Alt + Right และสำหรับการสลับเวิร์กสเปซ GNOME ฉันใช้ Ctrl + Alt + Shift + ซ้าย / ขวา ดูเหมือนจะซับซ้อน แต่ใช้งานได้ดีจริง ๆ

รหัสอักขระสำหรับเทอร์มินัล GNOME นั้นแตกต่างจากรหัสอักขระเมื่อเชื่อมต่อผ่าน PuTTy ดังนั้นฉันจึงต้องทำซ้ำรายการ คุณสามารถใช้cat> / dev / nullเพื่อค้นหารหัสอักขระที่เหมาะสมสำหรับคุณ

#     KEYBOARD SHORTCUTS    #
# execute 'cat > /dev/null' to see the character codes

# Change Escape Combination to Ctrl+f (Ctrl+a is too useful to lose)
escape ^Ff

# PREVIOUS WINDOW
# Ctrl + Alt + Left from gnome-terminal
bindkey ^[[1;7C prev

# Ctrl+Alt+Left from putty
bindkey ^[^[[D prev

# NEXT WINDOW
# Ctrl + Alt + Right from gnome-terminal
bindkey ^[[1;7D next

# Ctrl+Alt+Right from putty
bindkey ^[^[[C next

1

คำสั่ง backtick สวยมาก อ่านเกี่ยวกับเรื่องนี้ในหน้าจอมนุษย์ ฉันใช้มันอย่างนั้น:

backtick 1 15 15 $HOME/bin/cpuusage
# now add '%1`%% CPU' to your hardstatus string. Result is like 38.4% CPU.

สคริปต์ cpuusage ของฉันสำหรับ Linux และ Mac คือ:

#!/bin/bash
if [[ $(uname) == "Darwin" ]]; then
    top -i1 -l2 -n0|awk '/CPU/{i+=1; gsub(/%/,"",$0);p=substr(sprintf("%3.2f",$8+$10),0,4);if(i==2){printf "%g", p}}'
  else
    awk 'NR==1 {p=substr(sprintf("%3.2f", ($2+$3)/($2+$3+$4+$5)*100),0,4); printf "%g", p;}'</proc/stat
fi

0

ฉันไม่สามารถอยู่ได้หากไม่มีแถบเมนู สิ่งหนึ่งที่ฉันไม่ชอบวางบนเมนูซึ่งผู้คนจำนวนมากมีเวลา; มันป้องกันการเลื่อนของ PuTTY ไม่ให้เลื่อนกลับมา (เนื่องจากถือว่าเป็นการปรับปรุงหน้าจอ)


1
คุณสามารถใช้ scrollback ของหน้าจอได้หรือไม่? C-A [โดยค่าเริ่มต้นจะทำให้คุณเข้าสู่โหมดการคัดลอกและจะช่วยให้คุณสำรวจแท็บปัจจุบันโดยใช้คำสั่งแป้นพิมพ์เช่นโปรแกรมแก้ไขข้อความ
Murali Suriar

@ Murail ฉันชอบใช้ล้อเลื่อนแบบล้อเลียนในเม้าส์เมื่อฉันใช้ผงโป๊ ติดนิสัย @ ไมค์เกจ - ฉันพบว่าถ้าคุณกำจัดวินาทีในนาฬิกามันทำให้บัฟเฟอร์การเลื่อนบนหน้าจอทำงานได้ดี แน่นอนว่าส่วนใหญ่ฉันมีนาฬิกาบนหน้าจอเพื่อหลีกเลี่ยงการหมดเวลาที่ไม่ได้ใช้งานที่โง่ที่เราได้รับจากไฟร์วอลล์ที่ถูกสาปแช่งของเรา ฮึ่มม
Chris

0

ฉันได้ตั้งค่า F11 และ F12 เพื่อวนผ่านหน้าต่างทำให้การเลื่อนไปมาระหว่างหน้าต่างรวดเร็วขึ้นโดยเฉพาะสำหรับ windows> 10

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next

0

หากคุณใช้ urxvt ข้อมูลต่อไปนี้จะอนุญาตCTRL+LEFTและCTRL+RIGHTใช้เพื่อย้ายไปยังหน้าต่างแท็บก่อนหน้าและถัดไป:

bindkey "^[Od" prev  # ctrl-left
bindkey "^[Oc" next  # ctrl-right

เชื่อมต่อกับเซสชันหน้าจอระยะไกลที่ควรเรียกใช้หรือสร้างขึ้นทันที:

bind V screen -t MYTABNAME ssh -t MYUSERNAME "screen -x main || screen -R -S main"

การปิดการควบคุมการไหลโดยปริยายช่วยให้คุณใช้CTRL+Rใน rtorrent ได้อย่างถูกต้อง:

defflow off

หากรันrtorrent เป็น daemonด้วยบัญชีผู้ใช้ของตนเอง. screenrc นี้จะมีประโยชน์:

vbell off
startup_message off
escape ^Rr
screen -t rtorrent rtorrent
multiuser on
acladd YOURUSERNAME
defflow off

0

จากคำตอบของวิธีการบังคับให้หน้าจอ Gnu โหลด bash .profile ของฉันฉันจะเพิ่ม:

shell -$SHELL

ที่คุณ~/.screenrcจะทำให้screenหอยเริ่มต้นการเข้าสู่ระบบ นี้จะเป็นประโยชน์มากถ้าคุณต้องการของคุณดำเนินการเมื่อคุณใช้เปลือกผ่าน~/.bash_profilescreen


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