В основном как некоторые из моих собственных, которые я опубликовал ниже. Я ищу дополнительную функциональность для "экрана" программы. По крайней мере, взгляните на последнюю строку, чтобы увидеть фантастическую «строку меню» внизу сеанса экрана.
## 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}]'
Для тех, кто хочет менее загадочного способа настройки хорошего экрана, я могу от всей души порекомендовать Byobu (ранее называемые профилями экрана). Он дает вам хороший набор вещей по умолчанию в нижней части экрана - нижняя строка содержит различную удобную информацию о состоянии, а вторая снизу строка содержит список ваших экранных окон. Все это можно настроить в удобном меню ncurses, нажав F9.
Функциональные клавиши привязаны к общим операциям:
Видеть эта статья для руководства и скриншотов.
Byobu находится в репозиториях ubuntu начиная с karmic (9.10). В шутку это называлось экранными профилями. До этого его можно было установить из этот ппа из этого страница загрузки. Он широко упакован и для других современных дистрибутивов.
Это зависит от python, но как только вы настроите byobu так, как вам нравится, вы можете заставить его сгенерировать tar-шар, содержащий все, что вам нужно для воссоздания вашего экрана на другом компьютере, используя байобу-экспорт.
Я также использую довольно сложную комбинацию строки заголовка / жесткого статуса, чтобы имитировать эффект раскрывающихся вкладок (строка заголовка сплошного серого цвета, а текущая вкладка в жестком статусе имеет тот же цвет).
У меня также есть экран, указывающий на текущее имя процесса и каталог, в котором я нахожусь, поэтому имена моих вкладок соответствуют тому, что я делаю на каждой вкладке. Это очень важно для запоминания того, что я и где делаю, без необходимости пролистывать все открытые вкладки.
# 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}"
Итак, вот мои настройки zshrc, чтобы показать экрану, что я делаю на каждой вкладке.
# ~/.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
ИМХО, самая полезная настройка экрана - это изменить клавишу-модификатор на что-то другое, кроме C-a. Это слишком важный ключ, чтобы его можно было съесть (переходите в начало строки во всех приглашениях readline и в emacs). Я использую C-z, так как мне нужно приостанавливать приложения гораздо реже, чем мне нужно что-то редактировать в начале строки.
Волшебное слово:
escape ^za
У меня часто работает более 10 окон, и мне нужен способ их выбрать. Я узнал, как настроить C-a Shift + 0 до 9 для выбора окон с 10 по 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
Обратите внимание на escape-символы # и ^.
Устали от полноэкранных программ, таких как vim, которые остаются в буфере прокрутки после того, как вы их закрыли? Разве не было бы здорово, если бы они исчезли полностью, как они это делают, когда вы не используете экран? Попробуйте поместить это в свой файл ~ / .screenrc ...
altscreen on
Я использую Ctrl + Alt + Left и Ctrl + Alt + Right для переключения между окнами экрана. Для своего канала IRSSI я использую Alt + Left и Alt + Right, а для переключения рабочего пространства GNOME я использую Ctrl + Alt + Shift + Left / Right. Это кажется сложным, но на самом деле работает очень хорошо.
Коды символов для терминала GNOME отличаются от кодов символов при подключении через PuTTy, поэтому мне пришлось продублировать записи. Ты можешь использовать кошка> / dev / null чтобы узнать, какие коды символов вам подходят.
# 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
Команда обратного апострофа довольно хороша. Прочтите об этом в man screen. Пользуюсь так:
backtick 1 15 15 $HOME/bin/cpuusage
# now add '%1`%% CPU' to your hardstatus string. Result is like 38.4% CPU.
Мой скрипт cpuusage для Linux и 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
Я тоже не могу жить без строки меню. Одна вещь, которую я не люблю включать в меню, которое есть у многих людей, - это время; он не позволяет прокрутке назад PuTTY оставаться прокрученной назад (так как это считается обновлением экрана)
У меня F11 и F12 настроены на циклический переход между окнами, что ускоряет переход между окнами, особенно для окон> 10
# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next
Если вы используете urxvt, следующее позволит CTRL + ВЛЕВО и CTRL + ВПРАВО для перехода к предыдущему и следующему окну вкладок:
bindkey "^[Od" prev # ctrl-left
bindkey "^[Oc" next # ctrl-right
Повторное подключение к сеансу удаленного экрана, который всегда должен быть запущен или создан немедленно:
bind V screen -t MYTABNAME ssh -t MYUSERNAME "screen -x main || screen -R -S main"
Отключение управления потоком по умолчанию позволяет использовать CTRL + R в rtorrent правильно:
defflow off
Если работает rtorrent как демон со своей учетной записью пользователя этот .screenrc может быть полезен:
vbell off
startup_message off
escape ^Rr
screen -t rtorrent rtorrent
multiuser on
acladd YOURUSERNAME
defflow off
На основании ответов на Как заставить экран Gnu загружать мой. Профиль bash, Я бы добавил:
shell -$SHELL
на ваш ~/.screenrc
делать screen
запустить оболочки входа в систему. Это очень полезно, если вы хотите, чтобы ~/.bash_profile
выполняется, когда вы используете оболочку через screen
.
# disable C-a s, which freezes the screen; can be resolved with C-a q
bind s