Jakie są przydatne ustawienia .screenrc?

54

Zasadniczo jak niektóre z moich, które opublikowałem poniżej. Szukam dodatkowej funkcjonalności do „ekranu” programu. Przynajmniej spójrz na ostatnią linię fantastycznego „paska menu” na dole sesji ekranowej.

## 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
źródło

Odpowiedzi:

22

Dla tych, którzy chcą mniej tajemniczego sposobu na ładną konfigurację ekranu, mogę serdecznie polecić byobu (wcześniej nazywane profilami ekranowymi). Daje ci ładny domyślny zestaw rzeczy na dole ekranu - dolny wiersz zawiera różne przydatne informacje o stanie, a drugi z dolnego wiersza zawiera listę okien ekranu. Wszystko to można skonfigurować w ładnym menu ncurses, naciskając klawisz F9.

Klawisze funkcyjne są przypisane do typowych operacji:

  • F2 - utwórz nowe okno
  • F3 - Przejdź do poprzedniego okna
  • F4 - Przejdź do następnego okna
  • F5 - Przeładuj profil
  • F6 - Odłącz się od sesji
  • F7 - Przejdź do trybu przewijania
  • F8 - Wyświetl wszystkie skróty klawiszowe
  • F9 - Konfiguruj profile ekranu
  • F12 - Zablokuj ten terminal

Zobacz ten artykuł samouczek i zrzuty ekranu .

Byobu znajduje się w repozytoriach ubuntu od karmy (9.10). W jaunty nazywano to profilami ekranowymi. Wcześniej można go zainstalować z tej strony z tej strony pobierania . Jest również szeroko pakowany do innych aktualnych dystrybucji.

Zależy to od Pythona, ale po skonfigurowaniu byobu tak, jak lubisz, możesz wygenerować kulkę tar zawierającą wszystko, czego potrzebujesz, aby odtworzyć ekran na innym komputerze, używając byobu-export .

Hamish Downer
źródło
Profile ekranowe są niesamowite . Chciałem odpowiedzieć tym samym.
jtimberman
12

Używam również dość zaangażowanej kombinacji linii podpis / hardstatus, aby zasymulować efekt zakładek rozwijanych (linia podpisu jest jednolicie szara, a bieżąca karta w statusie twardym ma ten sam kolor).

Mam również powłokę informującą ekran o bieżącej nazwie procesu i katalogu, w którym się znajduję, więc moje nazwy kart są na bieżąco z tym, co robię na każdej karcie. Ma to kluczowe znaczenie dla zapamiętania tego, co robię, bez konieczności przeglądania wszystkich moich otwartych kart.

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

Oto moje ustawienia zshrc, aby powiedzieć ekranowi o tym, co robię na każdej karcie.

# ~/.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
szaleństwo
źródło
10

Najbardziej użytecznym dostosowaniem ekranu, IMHO, jest zmiana klawisza modyfikatora na coś innego niż Ca. Jest to po prostu zbyt ważny klucz do zjedzenia (przejdź do początku linii przy wszystkich pytaniach readline i emacs). Używam Cz, ponieważ muszę zawieszać aplikacje znacznie rzadziej niż muszę coś edytować na początku linii.

Magiczne słowo to:

escape ^za
jrockway
źródło
1
ustawiłem mój na ctrl-K, ponieważ jest to najmniej powszechnie używany klawisz ctrl w aplikacjach, których używam. ^ A jest zbyt przydatne w bash / readline, aby poświęcić.
cas
1
Aby sprawdzić, z czym się kolidujesz, możesz skonsultować się z superuser.com/questions/120333/… (o co prosiłem o to).
Hamish Downer
2
Do Twojej wiadomości, jeśli chcesz zostawić Ca jako klawisz moderatora, Ca a przejdzie na początek linii. Zajęło mi to trochę czasu, aby to zrozumieć.
Coomer,
9

Często mam uruchomione więcej niż 10 okien i chciałem je wybrać. Dowiedziałem się, jak skonfigurować Ca Shift + od 0 do 9, aby wybrać okna od 10 do 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

Zwróć uwagę na znaki ucieczki na # i ^.

staticsan
źródło
6

Masz dość programów pełnoekranowych, takich jak vim, pozostających w buforze przewijania po ich zamknięciu? Czy nie byłoby wspaniale, gdyby odeszli całkowicie tak, jak robią to, gdy ekran nie jest uruchomiony? Spróbuj umieścić to w swoim pliku ~ / .screenrc ...

altscreen on
Sean Colsen
źródło
2

Używam Ctrl + Alt + Left i Ctrl + Alt + Right, aby przełączać się między oknami ekranu. Dla mojego kanału IRSSI używam Alt + Left i Alt + Right, a do przełączania przestrzeni roboczej GNOME używam Ctrl + Alt + Shift + Left / Right. Wydaje się to skomplikowane, ale w rzeczywistości działa naprawdę dobrze.

Kody znaków dla terminala GNOME różnią się od kodów znaków podczas łączenia przez PuTTy, więc musiałem zduplikować wpisy. Możesz użyć cat> / dev / null, aby znaleźć odpowiednie kody znaków dla siebie.

#     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
źródło
1

Polecenie ruchu wstecz jest całkiem fajne. Przeczytaj o tym na ekranie mężczyzny. Używam go tak:

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

Mój skrypt cpuusage dla systemów Linux i Mac to:

#!/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
źródło
0

Nie mogę też żyć bez paska menu. Jedną z rzeczy, których nie lubię w menu, które ma wiele osób, jest czas; zapobiega cofaniu przewijania przez PuTTY (ponieważ jest to uważane za aktualizację ekranu)

Mikeage
źródło
1
Możesz użyć wbudowanego przewijania ekranu? C-A [domyślnie przełączy Cię w tryb kopiowania i pozwoli Ci poruszać się po bieżącej karcie za pomocą poleceń klawiaturowych, takich jak edytor tekstu?
Murali Suriar
@murail Wolę używać kółka do przewijania w mojej myszy, gdy używam szpachli; tylko nawyk. @mikeage - Odkryłem, że jeśli pozbędziesz się sekund na zegarze, bufor przewijania na ekranie działa całkiem dobrze. Oczywiście, mam głównie zegar na ekranie, aby uniknąć głupich przestojów, które mamy w naszych przeklętych zaporach ogniowych. grrr.
Chris 20'11
0

Mam F11 i F12 ustawione na cykliczne przechodzenie między oknami, dzięki czemu szybsze przemieszczanie się między oknami, szczególnie dla okien> 10

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next
inne
źródło
0

Jeśli używasz urxvt, poniższe pozwolą CTRL+LEFTi CTRL+RIGHTzostaną użyte do przejścia do poprzedniego i następnego okna karty:

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

Ponowne łączenie się ze zdalną sesją ekranu, która zawsze powinna być uruchomiona lub natychmiast utworzona:

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

Domyślne wyłączenie kontroli przepływu umożliwia CTRL+Rprawidłowe użycie w rtorrent:

defflow off

Jeśli uruchomisz rtorrent jako demon z własnym kontem użytkownika, ten plik .screenrc może być przydatny:

vbell off
startup_message off
escape ^Rr
screen -t rtorrent rtorrent
multiuser on
acladd YOURUSERNAME
defflow off
Trey Hunner
źródło
0
# disable C-a s, which freezes the screen; can be resolved with C-a q
bind s 
Chase T.
źródło