Cài đặt .screenrc hữu ích là gì?


54

Về cơ bản giống như một số của riêng tôi mà tôi đã đăng dưới đây. Tôi đang tìm kiếm thêm chức năng cho 'màn hình' chương trình. Ít nhất hãy nhìn vào dòng cuối cùng cho một 'thanh menu' tuyệt vời ở cuối phiên màn hình.

## 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}]'

Câu trả lời:


22

Đối với những người muốn có một cách ít khó hiểu hơn để thiết lập một màn hình đẹp, tôi có thể giới thiệu byobu (trước đây gọi là hồ sơ màn hình). Nó cung cấp cho bạn một bộ công cụ mặc định đẹp ở cuối màn hình - dòng dưới cùng chứa nhiều thông tin trạng thái tiện dụng khác nhau và dòng thứ hai từ dòng dưới cùng chứa danh sách các cửa sổ màn hình của bạn. Tất cả điều này có thể được cấu hình trong một menu ncurses dễ dàng bằng cách nhấn F9.

Các phím chức năng được ánh xạ tới các hoạt động phổ biến:

  • F2 - tạo một cửa sổ mới
  • F3 - Chuyển đến cửa sổ trước
  • F4 - Chuyển đến cửa sổ tiếp theo
  • F5 - Tải lại hồ sơ
  • F6 - Tách khỏi phiên
  • F7 - Vào chế độ cuộn lại
  • F8 - Xem tất cả các phím bấm
  • F9 - Cấu hình cấu hình màn hình
  • F12 - Khóa thiết bị đầu cuối này

Xem bài viết này cho một hướng dẫn và ảnh chụp màn hình .

Byobu nằm trong kho ubfox từ karmic (9.10) trở đi. Trong trò đùa, nó được gọi là màn hình. Trước đó, nó có thể được cài đặt từ ppa này từ trang tải xuống này . Nó được đóng gói rộng rãi cho các bản phân phối cập nhật khác.

Nó phụ thuộc vào python, nhưng một khi bạn đã thiết lập byobu tùy thích, bạn có thể tạo ra một quả bóng tar chứa tất cả những gì bạn cần để tạo lại màn hình của mình trên một máy tính khác bằng cách sử dụng byobu-export .


Hồ sơ màn hình là tuyệt vời . Tôi sẽ trả lời với cùng.
jtimberman

12

Tôi cũng sử dụng kết hợp dòng chú thích / hardstatus khá liên quan, để mô phỏng hiệu ứng của các tab thả xuống (dòng chú thích có màu xám đặc và tab hiện tại trong hardstatus có cùng màu).

Tôi cũng có trình bao của mình cho màn hình biết tên quy trình hiện tại là gì và tôi đang ở thư mục nào, vì vậy tên tab của tôi luôn cập nhật với những gì tôi đang làm trong mỗi tab. Điều này rất quan trọng để ghi nhớ những gì tôi đang làm ở đâu mà không cần phải lướt qua tất cả các tab đang mở.

 # 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}"

Vì vậy, đây là cài đặt zshrc của tôi để cho màn hình biết về những gì tôi đang làm trong mỗi tab.

# ~/.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

Tùy chỉnh màn hình hữu ích nhất, IMHO, là thay đổi phím bổ trợ thành một thứ khác ngoài Ca. Đó là quá quan trọng của một chìa khóa để ăn (đi đến đầu dòng ở tất cả các lời nhắc đọc và trong emacs). Tôi sử dụng Cz, vì tôi cần tạm dừng các ứng dụng ít thường xuyên hơn tôi cần chỉnh sửa một cái gì đó ở đầu dòng.

Từ ma thuật là:

escape ^za

1
tôi đặt của tôi thành ctrl-K vì đó là khóa ctrl ít được sử dụng nhất trong các ứng dụng tôi sử dụng. ^ A quá hữu ích trong bash / readline để hy sinh.
cas

1
Để kiểm tra những gì bạn đụng độ với bạn, bạn có thể tham khảo superuser.com/questions/120333/ Khăn (mà tôi đã hỏi với điều này trong đầu).
Hamish Downer

2
FYI, Nếu bạn muốn để Ca làm khóa điều hành, Ca a sẽ đi đến đầu dòng. Tôi phải mất một thời gian để tìm ra điều này.
Coome

9

Tôi thường có hơn 10 cửa sổ đang chạy và muốn có một cách để chọn chúng. Tôi đã tìm ra cách định cấu hình Ca Shift + 0 đến 9 để chọn windows 10 đến 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

Lưu ý các lối thoát trên # và ^.


6

Bạn có bị các chương trình toàn màn hình như vim còn lại trong bộ đệm cuộn lại sau khi bạn đóng chúng không? Sẽ không tuyệt sao nếu họ biến mất hoàn toàn giống như họ làm khi bạn không chạy màn hình? Hãy thử đặt tệp này vào tệp ~ / .screenrc của bạn ...

altscreen on

2

Tôi đang sử dụng Ctrl + Alt + Trái và Ctrl + Alt + Phải để chuyển giữa các cửa sổ màn hình. Đối với kênh IRSSI của tôi, tôi sử dụng Alt + Trái và Alt + Phải và để chuyển đổi không gian làm việc của Gnome, tôi sử dụng Ctrl + Alt + Shift + Trái / Phải. Có vẻ phức tạp, nhưng nó thực sự hoạt động tốt.

Mã ký tự cho thiết bị đầu cuối Gnome khác với mã ký tự khi kết nối qua PuTTy, vì vậy tôi phải sao chép các mục nhập. Bạn có thể sử dụng cat> / dev / null để tìm ra mã ký tự phù hợp cho bạn.

#     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

Lệnh backtick khá hấp dẫn. Đọc về nó trong màn hình người đàn ông. Tôi sử dụng nó như vậy:

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

Kịch bản cpuusage của tôi cho Linux và Mac là:

#!/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

Tôi cũng không thể sống mà không có thanh menu. Một điều tôi không thích đưa vào thực đơn mà nhiều người có là thời gian; nó ngăn cuộn của PuTTY không bị cuộn lại (vì nó được coi là cập nhật màn hình)


1
Bạn có thể sử dụng cuộn lại sẵn có của màn hình? C-A [theo mặc định sẽ đưa bạn vào chế độ sao chép và sẽ cho phép bạn điều hướng tab hiện tại của mình bằng các lệnh bàn phím như trình soạn thảo văn bản?
Murali Suriar

@murail Tôi thích sử dụng bánh xe scrolly trong chuột của tôi khi tôi đang sử dụng putty; Chỉ là thói quen. @mikeage - Tôi thấy rằng nếu bạn thoát khỏi giây trên đồng hồ, nó làm cho bộ đệm cuộn trên màn hình hoạt động khá tốt. Tất nhiên, tôi chủ yếu có đồng hồ trên màn hình để tránh thời gian nhàn rỗi ngu ngốc mà chúng tôi có trên tường lửa chết tiệt của chúng tôi. grrr.
chris

0

Tôi có F11 và F12 được thiết lập để quay vòng qua các cửa sổ, giúp di chuyển nhanh hơn giữa các cửa sổ, đặc biệt là đối với các cửa sổ> 10

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

0

Nếu bạn đang sử dụng urxvt, phần sau đây sẽ cho phép CTRL+LEFTCTRL+RIGHTđược sử dụng để chuyển sang cửa sổ tab trước và tiếp theo:

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

Kết nối lại với phiên màn hình từ xa sẽ luôn được chạy hoặc được tạo ngay lập tức:

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

Tắt điều khiển luồng theo mặc định cho phép bạn sử dụng CTRL+Rtrong rtorrent đúng cách:

defflow off

Nếu chạy rtorrent dưới dạng daemon bằng tài khoản người dùng của riêng nó, .screenrc này có thể hữu ích:

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


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.