Quali sono le utili impostazioni .screenrc?


54

Praticamente come alcuni dei miei che ho pubblicato di seguito. Sto cercando funzionalità aggiuntive allo "schermo" del programma. Perlomeno dai un'occhiata all'ultima riga per una fantastica "barra dei menu" nella parte inferiore di una sessione dello schermo.

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

Risposte:


22

Per coloro che desiderano un modo meno enigmatico di configurare un bel schermo, posso consigliare vivamente byobu (precedentemente chiamato profili schermo). Ti dà un bel set predefinito di cose nella parte inferiore dello schermo: la riga inferiore contiene varie utili informazioni sullo stato e la seconda dalla riga inferiore contiene un elenco delle finestre dello schermo. Tutto questo può essere configurato in un menu semplice e intuitivo premendo F9.

I tasti funzione sono associati a operazioni comuni:

  • F2 - crea una nuova finestra
  • F3 - Vai alla finestra precedente
  • F4 - Vai alla finestra successiva
  • F5 - Ricarica profilo
  • F6 - Stacca dalla sessione
  • F7 - Entra nella modalità di scorrimento
  • F8 - Visualizza tutte le combinazioni di tasti
  • F9 - Configura i profili dello schermo
  • F12 - Blocca questo terminale

Vedi questo articolo per un tutorial e schermate .

Byobu è nei repository ubuntu da karmic (9.10) in poi. In allegria si chiamava profili dello schermo. Prima di ciò può essere installato da questo ppa da questa pagina di download . È ampiamente confezionato anche per altre distribuzioni aggiornate.

Dipende da Python, ma una volta configurato byobu come preferisci, puoi farlo generare una tar ball contenente tutto il necessario per ricreare lo schermo su un altro computer usando byobu-export .


I profili dello schermo sono fantastici . Stavo per rispondere con lo stesso.
jtimberman,

12

Uso anche una combinazione di riga didascalia / hardstatus abbastanza coinvolta, per simulare l'effetto delle schede a discesa (la riga della didascalia è grigia e la scheda corrente nell'hardstatus è dello stesso colore).

Ho anche la mia shell dire allo schermo qual è il nome del processo corrente e in quale directory mi trovo, quindi i miei nomi delle schede rimangono aggiornati con quello che sto facendo in ogni scheda. Questo è fondamentale per ricordare cosa sto facendo dove senza dover sfogliare tutte le mie schede aperte.

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

Quindi ecco le mie impostazioni di zshrc per dire allo schermo cosa sto facendo in ogni scheda.

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

La personalizzazione dello schermo più utile, IMHO, è quella di cambiare il tasto modificatore in qualcosa di diverso da Ca. È una chiave troppo importante per aver mangiato (vai all'inizio della riga in tutte le istruzioni readline e in emacs). Uso Cz, poiché ho bisogno di sospendere le applicazioni molto meno spesso di quanto sia necessario modificare qualcosa all'inizio della riga.

La parola magica è:

escape ^za

1
ho impostato il mio su ctrl-K perché è il tasto ctrl meno comunemente usato nelle app che utilizzo. ^ A è troppo utile in bash / readline per sacrificare.
Cas

1
Per verificare ciò con cui vi scontrate, potete consultare superuser.com/questions/120333/… (che ho chiesto con questo in mente).
Hamish Downer,

2
Cordiali saluti, Se si desidera lasciare Ca come chiave del moderatore, Ca a andrà all'inizio della riga. Mi ci è voluto un po 'per capirlo.
Coomer,

9

Spesso ho più di 10 finestre in esecuzione e volevo un modo per selezionarle. Ho scoperto come configurare Ca Shift da + 0 a 9 per selezionare Windows da 10 a 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

Nota le escape su # e ^.


6

Sei stufo dei programmi a schermo intero come vim rimasti nel buffer di scrollback dopo averli chiusi? Non sarebbe bello se sparissero completamente come fanno quando non si esegue lo schermo? Prova a metterlo nel tuo file ~ / .screenrc ...

altscreen on

2

Sto usando Ctrl + Alt + Sinistra e Ctrl + Alt + Destra per passare da una finestra dello schermo all'altra. Per il mio canale IRSSI utilizzo Alt + Sinistra e Alt + Destra, e per la commutazione dell'area di lavoro GNOME utilizzo Ctrl + Alt + Maiusc + Sinistra / Destra. Sembra complicato, ma in realtà funziona davvero bene.

I codici dei caratteri per il terminale GNOME sono diversi dai codici dei caratteri durante la connessione tramite PuTTy, quindi ho dovuto duplicare le voci. Puoi usare cat> / dev / null per scoprire i codici carattere appropriati per te.

#     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

Il comando backtick è piuttosto interessante. Leggi a riguardo nella schermata man. Lo uso così:

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

Il mio script cpuusage per Linux e 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

Inoltre non posso vivere senza la barra dei menu. Una cosa che non mi piace mettere nel menu che molte persone hanno è il tempo; impedisce allo scorrimento indietro di PuTTY di rimanere indietro (poiché è considerato un aggiornamento dello schermo)


1
Potresti usare lo scrollback integrato dello schermo? C-A [di default ti metterà in modalità copia e ti permetterà di navigare nella scheda corrente usando i comandi da tastiera come un editor di testo?
Murali Suriar,

@murail Preferisco usare lo scrolly wheel nel mio mouse quando uso putty; solo abitudine. @mikeage - Ho scoperto che se ti sbarazzi dei secondi dell'orologio, il buffer di scorrimento sullo schermo funziona abbastanza bene. Naturalmente, per lo più ho un orologio sullo schermo per evitare gli stupidi timeout inattivi che abbiamo sui nostri dannati firewall. grrr.
chris,

0

Ho F11 e F12 impostati per scorrere tra le finestre, rende più veloce lo spostamento tra le finestre, in particolare per 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

Se stai usando urxvt, i seguenti permetteranno CTRL+LEFTe CTRL+RIGHTsaranno usati per passare alla finestra della scheda precedente e successiva:

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

Riconnettersi a una sessione dello schermo remoto che dovrebbe essere sempre in esecuzione o immediatamente creata:

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

La disattivazione del controllo di flusso per impostazione predefinita consente di utilizzare CTRL+Rcorrettamente rtorrent:

defflow off

Se si esegue rtorrent come demone con il proprio account utente, questo .screenrc può essere utile:

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


0
# disable C-a s, which freezes the screen; can be resolved with C-a q
bind s 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.