什么是有用的.screenrc设置?

基本上像我已经发布的一些我自己的。 我正在寻找添加function的程序“屏幕”。 至less看看在屏幕会议底部的一个梦幻般的“菜单栏”的最后一行。

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

对于那些想获得一个不错的屏幕build立一个不那么神秘的方式,我可以衷心推荐byobu (以前称为屏幕configuration文件)。 它给你一个很好的默认设置在屏幕的底部 – 底线包含各种方便的状态信息,第二条底线包含你的屏幕窗口的列表。 所有这些都可以通过按F9在一个简单的ncurses菜单中进行configuration。

function键映射到常用操作:

  • F2 – 创build一个新的窗口
  • F3 – 进入prev窗口
  • F4 – 转到下一个窗口
  • F5 – 重新加载configuration文件
  • F6 – 脱离会议
  • F7 – 进入回卷模式
  • F8 – 查看所有键绑定
  • F9 – configuration屏幕configuration文件
  • F12 – locking此端子

看到这篇文章的教程和截图 。

Byobu从业力(9.10)开始在Ubuntu的仓库中。 在jaunty它被称为屏幕configuration文件。 在此之前,它可以从这个下载页面的 PPA安装。 它也被广泛地包装,用于其他最新的发行版。

它依赖于python,但是一旦你有了喜欢它的设置,你可以让它生成一个tar包含所有你需要在另一台计算机上使用byobu-export重新创build你的屏幕。

我还使用了相当复杂的caption / hardstatus行组合来模拟下拉列表的效果(标题行是纯灰色的,hardstatus中的当前标签是相同的颜色)。

我也有我的shell告诉屏幕什么是当前的进程名称和我在哪个目录,所以我的标签名称保持与我在每个选项卡中做什么。 这是记住我在做什么而不必轻弹我所有打开的标签的关键。

  # 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') # (eg 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 

最有用的屏幕自定义,恕我直言,是将修改键改为非Ca的东西。 这对于吃掉钥匙来说太重要了(在所有的readline提示符和emacs里都可以find该行的开头)。 我使用Cz,因为我需要暂停应用程序的次数less于需要在行首开始编辑的次数。

魔术字是:

 escape ^za 

我经常有超过10个窗口运行,并希望有一种方法来select它们。 我发现如何configurationCa Shift + 0到9来select窗口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 

请注意#和^上的转义。

生病的全屏程序,如vim在closures后保留在回滚缓冲区中? 如果他们完全离开,就像他们不在屏幕上一样,这不是很好吗? 尝试把这个在你的〜/ .screenrc文件中…

 altscreen on 

我使用Ctrl + Alt + Left和Ctrl + Alt + Right在屏幕窗口之间切换。 对于我的IRSSI频道,我使用Alt + Left和Alt + Right,对于GNOME工作区切换,我使用Ctrl + Alt + Shift + Left / Right。 看起来很复杂,但实际上效果很好。

当通过PuTTy连接时,GNOMEterminal的字符代码与字符代码不同,所以我必须复制这些条目。 您可以使用cat> / dev / null为您find合适的字符代码。

 # 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 

backtick命令是相当groovy。 在人屏幕上阅读有关它。 我这样使用它:

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

我的Linux和Mac的cpuusage脚本是:

 #!/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 + LEFTCTRL + RIGHT移动到上一个和下一个选项卡窗口:

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

重新连接到应始终运行或立即创build的远程屏幕会话:

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

closures默认stream量控制允许您正确使用rtorrent中的CTRL + R

 defflow off 

如果使用自己的用户帐户作为守护进程运行rtorrent ,这个.screenrc会很有用:

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

基于如何强制Gnu屏幕加载我的bash .profile的答案,我会添加:

 shell -$SHELL 

到你的~/.screenrc使screen开始loginshell。 如果您希望在通过screen使用shell时执行~/.bash_profile这非常有用。

 # disable Ca s, which freezes the screen; can be resolved with Ca q bind s