Quais são as configurações úteis do .screenrc?


54

Basicamente, como alguns dos meus que eu postei abaixo. Estou procurando por funcionalidades adicionais na tela do programa. No mínimo, dê uma olhada na última linha para uma fantástica 'barra de menus' na parte inferior de uma sessão de tela.

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

Respostas:


22

Para aqueles que desejam uma maneira menos enigmática de configurar uma tela agradável, recomendo vivamente o byobu (anteriormente chamado de perfis de tela). Ele fornece um bom conjunto padrão de itens na parte inferior da tela - a linha inferior contém várias informações úteis sobre o status e a segunda da linha inferior contém uma lista das janelas da tela. Tudo isso pode ser configurado em um menu agradável e fácil, pressionando F9.

As teclas de função são mapeadas para operações comuns:

  • F2 - crie uma nova janela
  • F3 - Ir para a janela anterior
  • F4 - Ir para a próxima janela
  • F5 - Atualizar perfil
  • F6 - Desconectar da sessão
  • F7 - Entre no modo de rolagem
  • F8 - Ver todos os atalhos de teclado
  • F9 - Configurar perfis de tela
  • F12 - Bloqueie este terminal

Consulte este artigo para obter um tutorial e capturas de tela .

O Byobu está nos repositórios do ubuntu a partir do karmic (9.10). Em alegre, chamava-se perfis de tela. Antes disso, ele pode ser instalado neste ppa ou nesta página de download . Ele é amplamente fornecido para outras distribuições atualizadas também.

Depende do python, mas depois de configurar o byobu como quiser, você poderá gerar uma bola de alcatrão contendo tudo o que precisa para recriar sua tela em outro computador usando o byobu-export .


Perfis de tela é incrível . Eu ia responder com o mesmo.
jtimberman

12

Também uso uma combinação de linha de legenda / estado físico bastante envolvida, para simular o efeito das guias suspensas (a linha de legenda é cinza sólida e a guia atual no estado rígido é da mesma cor).

Também tenho na tela shell tell qual é o nome do processo atual e em qual diretório estou, para que os nomes das minhas guias fiquem atualizados com o que estou fazendo em cada guia. Isso é essencial para lembrar o que estou fazendo, sem precisar percorrer todas as minhas abas abertas.

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

Então, aqui estão minhas configurações do zshrc para mostrar à tela o que estou fazendo em cada guia.

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

A personalização da tela mais útil, IMHO, é alterar a tecla modificadora para algo diferente de Ca. É uma chave muito importante para comer (vá para o início da linha em todos os avisos de linha de leitura e no emacs). Uso o Cz, pois preciso suspender os aplicativos com muito menos frequência do que preciso editar algo no início da linha.

A palavra mágica é:

escape ^za

11
Eu defino o meu como ctrl-K porque é a tecla ctrl menos usada nos aplicativos que eu uso. ^ A é muito útil no bash / readline para sacrificar.
cas

11
Para verificar o que você colide, consulte superuser.com/questions/120333/… (o que eu perguntei com isso em mente).
amigos estão dizendo

2
Para sua informação, se você quiser deixar o Ca como a tecla moderadora, o Ca a irá para o início da linha. Levei um tempo para descobrir isso.
Coomer

9

Muitas vezes, tenho mais de 10 janelas em execução e queria uma maneira de selecioná-las. Eu descobri como configurar o Ca Shift + 0 a 9 para selecionar as janelas 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

Observe as fugas em # e ^.


6

Cansado de programas em tela cheia, como o vim, que permanece no buffer de rolagem depois que você os fechou? Não seria ótimo se eles desaparecessem completamente, exatamente como quando você não está executando a tela? Tente colocar isso no seu arquivo ~ / .screenrc ...

altscreen on

2

Estou usando Ctrl + Alt + Esquerda e Ctrl + Alt + Direita para alternar entre as janelas da tela. Para o meu canal IRSSI, uso Alt + Esquerda e Alt + Direita, e para a alternância da área de trabalho do GNOME, use Ctrl + Alt + Shift + Esquerda / Direita. Parece complicado, mas na verdade funciona muito bem.

Os códigos de caracteres para o terminal GNOME são diferentes dos códigos de caracteres ao conectar-se através do PuTTy, então tive que duplicar as entradas. Você pode usar cat> / dev / null para descobrir os códigos de caracteres apropriados para você.

#     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

O comando backtick é bem legal. Leia sobre isso na tela do homem. Eu uso assim:

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

Meu script cpuusage para 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

Também não posso viver sem a barra de menus. Uma coisa que eu não gosto de colocar no menu que muita gente tem é o tempo; impede que a rolagem do PuTTY volte para trás (uma vez que é considerada uma atualização de tela)


11
Você poderia usar o scrollback embutido da tela? C-A [por padrão, coloca você no modo de cópia e permite navegar na guia atual usando os comandos do teclado como um editor de texto?
Murali Suriar

@murail Prefiro usar a roda scrolly no mouse quando estiver usando massa de vidraceiro; apenas hábito. @ Mikeage - Descobri que, se você se livrar dos segundos no relógio, o buffer de rolagem na tela funciona muito bem. Obviamente, na maioria das vezes tenho um relógio na tela para evitar os tempos estúpidos de tempo ocioso que temos em nossos malditos firewalls. grrr.
chris

0

Eu tenho o F11 e o F12 configurados para alternar entre janelas, facilita a movimentação entre janelas, especialmente para janelas> 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 você estiver usando o urxvt, o seguinte permitirá CTRL+LEFTe CTRL+RIGHTserá usado para passar para a janela da guia anterior e seguinte:

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

Reconectando a uma sessão de tela remota que sempre deve estar em execução ou criada imediatamente:

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

Desativar o controle de fluxo por padrão permite usar o CTRL+Rrtorrent corretamente:

defflow off

Se estiver executando o rtorrent como um daemon com sua própria conta de usuário, este .screenrc poderá ser útil:

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 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.