Apa pengaturan .screenrc yang berguna?

54

Pada dasarnya seperti beberapa milik saya yang saya posting di bawah ini. Saya mencari fungsionalitas tambahan ke 'layar' program. Paling tidak lihat di baris terakhir untuk 'menu bar' fantastis di bagian bawah sesi layar.

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

Gareth
sumber

Jawaban:

22

Bagi mereka yang menginginkan cara yang kurang samar untuk menyiapkan layar yang bagus, saya sungguh-sungguh dapat merekomendasikan byobu (sebelumnya disebut profil layar). Ini memberi Anda seperangkat barang bawaan yang bagus di bagian bawah layar - garis bawah berisi berbagai informasi status praktis, dan baris kedua dari bawah berisi daftar jendela layar Anda. Semua ini dapat dikonfigurasi dalam menu ncurses mudah yang bagus dengan menekan F9.

Tombol fungsi dipetakan ke operasi umum:

  • F2 - buat jendela baru
  • F3 - Pergi ke jendela prev
  • F4 - Pergi ke jendela berikutnya
  • F5 - Muat ulang profil
  • F6 - Lepaskan dari sesi
  • F7 - Masuk ke mode scrollback
  • F8 - Lihat semua ikatan kunci
  • F9 - Konfigurasikan profil layar
  • F12 - Kunci terminal ini

Lihat artikel ini untuk tutorial dan tangkapan layar .

Byobu ada dalam repositori ubuntu dari karmic (9,10) dan seterusnya. Dalam riang itu disebut profil layar. Sebelum itu dapat diinstal dari ppa ini dari halaman unduhan ini . Ini banyak dikemas untuk distro terbaru lainnya juga.

Itu memang tergantung pada python, tetapi begitu Anda telah mengatur byobu sesuka Anda, Anda dapat membuatnya menghasilkan bola tar yang berisi semua yang Anda butuhkan untuk membuat ulang layar Anda di komputer lain menggunakan byobu-ekspor .

Hamish Downer
sumber
Profil layar mengagumkan . Saya akan menjawab dengan hal yang sama.
jtimberman
12

Saya juga menggunakan kombinasi garis keterangan / hardstatus yang cukup terlibat, untuk mensimulasikan efek tab dropdown (garis keterangan berwarna abu-abu solid dan tab saat ini dalam hardstatus berwarna sama).

Saya juga meminta shell saya memberi tahu layar apa nama proses saat ini dan direktori apa yang saya masuki, jadi nama tab saya tetap up to date dengan apa yang saya lakukan di setiap tab. Ini penting untuk mengingat apa yang saya lakukan di mana tanpa harus membuka semua tab terbuka saya.

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

Jadi, inilah pengaturan zshrc saya untuk memberi tahu layar tentang apa yang saya lakukan di setiap 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
rampion
sumber
10

Kustomisasi layar yang paling berguna, IMHO, adalah mengubah kunci pengubah ke sesuatu selain Ca. Itu terlalu penting dari kunci untuk dimakan (pergi ke awal baris sama sekali meminta readline, dan di emacs). Saya menggunakan Cz, karena saya harus menunda aplikasi jauh lebih sering daripada saya perlu mengedit sesuatu di awal baris.

Kata ajaibnya adalah:

escape ^za
Jrockway
sumber
1
saya mengatur milik saya ke ctrl-K karena itu adalah kunci ctrl yang paling jarang digunakan di aplikasi yang saya gunakan. ^ A terlalu berguna dalam bash / readline untuk dikorbankan.
cas
1
Untuk memeriksa apa yang Anda bentrok dengan Anda dapat berkonsultasi dengan superuser.com/questions/120333/… (yang saya tanyakan dengan mengingat hal ini).
Hamish Downer
2
FYI, Jika Anda ingin meninggalkan Ca sebagai kunci moderator, Ca a akan menuju ke awal baris. Butuh beberapa saat untuk memikirkan hal ini.
Coomer
9

Saya sering memiliki lebih dari 10 windows yang berjalan dan menginginkan cara untuk memilihnya. Saya menemukan cara mengkonfigurasi Ca Shift + 0 hingga 9 untuk memilih windows 10 hingga 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

Catat pelarian di # dan ^.

ahli statika
sumber
6

Muak dengan program layar penuh seperti vim yang tersisa di buffer scrollback setelah Anda menutupnya? Bukankah lebih bagus jika mereka pergi sepenuhnya seperti yang mereka lakukan ketika Anda tidak menjalankan layar? Coba letakkan ini di file ~ / .screenrc Anda ...

altscreen on
Sean
sumber
2

Saya menggunakan Ctrl + Alt + Kiri dan Ctrl + Alt + Kanan untuk beralih di antara jendela layar. Untuk saluran IRSSI saya, saya menggunakan Alt + Kiri dan Alt + Kanan, dan untuk switching ruang kerja GNOME saya menggunakan Ctrl + Alt + Shift + Kiri / Kanan. Tampaknya rumit, tetapi sebenarnya berfungsi dengan sangat baik.

Kode karakter untuk terminal GNOME berbeda dari kode karakter ketika menghubungkan melalui Putty, jadi saya harus menduplikasi entri. Anda dapat menggunakan cat> / dev / null untuk mengetahui kode karakter yang sesuai untuk Anda.

#     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
tboerman
sumber
1

Perintah backtick cukup asyik. Baca tentang itu di layar manual. Saya menggunakannya seperti ini:

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

Skrip cpuusage saya untuk Linux dan Mac adalah:

#!/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
Bruno Bronosky
sumber
0

Saya juga tidak bisa hidup tanpa menu bar. Satu hal yang saya tidak suka memakai menu yang banyak orang miliki adalah waktu; itu mencegah gulir kembali Putty dari tetap digulir kembali (karena itu dianggap sebagai pembaruan layar)

Mikeage
sumber
1
Anda bisa menggunakan scrollback bawaan layar? C-A [secara default akan menempatkan Anda ke mode salin, dan akan memungkinkan Anda untuk menavigasi tab Anda saat ini menggunakan perintah keyboard seperti editor teks?
Murali Suriar
@murail Saya lebih suka menggunakan roda scrolly thingy di mouse saya ketika saya menggunakan dempul; hanya kebiasaan. @ Mikeage - Saya menemukan bahwa jika Anda menyingkirkan detik pada jam itu membuat buffer scrollback di layar berfungsi dengan baik. Tentu saja, saya kebanyakan memiliki jam di layar saya untuk menghindari timeout bodoh bodoh yang kami punya di firewall terkutuk kami. Grrr
chris
0

Saya memiliki F11 dan F12 diatur untuk siklus melalui windows, membuatnya lebih cepat untuk berpindah antar windows, terutama untuk windows> 10

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

Jika Anda menggunakan urxvt, yang berikut ini akan memungkinkan CTRL+LEFTdan CTRL+RIGHTdigunakan untuk pindah ke jendela tab sebelumnya dan berikutnya:

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

Menghubungkan kembali ke sesi layar jauh yang harus selalu berjalan atau segera dibuat:

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

Mematikan kontrol aliran secara default memungkinkan Anda untuk menggunakan CTRL+Rrtorrent dengan benar:

defflow off

Jika menjalankan rtorrent sebagai daemon dengan akun penggunanya sendiri, .rcrc ini dapat bermanfaat:

vbell off
startup_message off
escape ^Rr
screen -t rtorrent rtorrent
multiuser on
acladd YOURUSERNAME
defflow off
Trey Hunner
sumber
0

Berdasarkan jawaban untuk Cara memaksa layar Gnu memuat bash .profile saya, saya akan menambahkan:

shell -$SHELL

ke Anda ~/.screenrcuntuk membuat screenshell login mulai. Ini sangat berguna jika Anda ingin ~/.bash_profiledieksekusi ketika Anda menggunakan shell through screen.

Rodrigue
sumber
0
# disable C-a s, which freezes the screen; can be resolved with C-a q
bind s 
Chase T.
sumber