我稍微调整了一下我的工作机器,现在将我的终端保持在垂直方向的显示器上,这导致我的需求与 GNU screen 略有不同。在此更改之前,我一直在相关机器(mac)和两个 arch-linux 机器之间共享相同的 .screenrc 文件。
匹配我在 .bashrc 中放入的一些条件来为不同的系统配置内容,有什么方法可以提供条件行为,例如,在一个系统上将显示拆分为水平面板,在另一个系统上将显示拆分为垂直面板?
没看到任何东西屏幕使用手册,我能想到的最接近的尝试是设置我的 .bashrc 来发送屏幕命令 alascreen -S <name> -X <command>
并让 .bashrc 文件弄清楚要做什么,但这感觉有点像用脚本和配置文件构建鲁布·戈德堡机器。
答案1
作为长期GNUscreen
用户(大约 13 年),我很确定 中没有这样的功能GNUscreen
。如果您不介意,我建议切换到tmux
,因为它对多面板工作流程的支持非常出色。可以配置它,tmux
使其具有与 几乎相同的键盘快捷键GNUscreen
(尽管默认设置完全不同)。此外,tmux
还有if-shell
声明,基本上可以满足您在此处要求的GNUscreen
支持。虽然它没有以积极的方式回答您的问题,但我希望这些信息对您有所帮助。
根据请求添加我的 .tmux.conf (适用于版本 1.9):
# starts here:
set-option -sg prefix C-a
set-option -sga update-environment " MRXVT_TABTITLE TERMINATOR_UUID TERMINATOR_DBUS_NAME TERM_NO TERMINATOR_DBUS_PATH REMOTEHOST REMOTE_HOST"
set-option -sga terminal-overrides ",xterm*:smul=\e[35;1m:smcup@:rmcup@:acsc=\`\`aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~+>-\^.v0#,*rxvt*:smul=\e[35;1m:smcup@:rmcup@:acsc=\`\`aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~+>-\^.v0#,vte*:sitm=\e[34;1;7m:smul=\e[35;1m:smcup@:rmcup@:acsc=\`\`aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~+>-\^.v0#"
set-environment -gr TERM_NO
unbind-key C-b
bind-key a send-prefix
set-option -sg visual-bell on
set-option -sg default-terminal screen-256color-bce
set-option -sg status off
set-option -sg default-command ${SHELL}
set-option -sg message-bg green
set-option -sg message-fg black
set-option -sg message-attr default
set-option -sg message-command-bg green
set-option -sg pane-active-border-fg red
set-option -sg pane-active-border-bg black
set-option -sg pane-border-fg red
set-option -sg pane-border-bg black
set-option -sg status-bg green
set-option -sg mode-bg green
set-option -sg display-time 500
set-option -sg mode-mouse on
set-option -sg mouse-select-pane on
set-option -sg mouse-select-window on
set-option -sg lock-command vlock
set-option -sg xterm-keys on
set-option -sg repeat-time 0
set-option -sg escape-time 10
set-window-option -g monitor-activity on
bind-key C-c new-window -c ${PWD}
bind-key C-n next-window
bind-key Space next-window
bind-key C-Space next-window
bind-key BSpace previous-window
bind-key C-BSpace previous-window
bind-key C-p previous-window
bind-key C-d detach-client
bind-key C-[ copy-mode
bind-key C-] paste-buffer
unbind-key l
unbind-key x
bind-key C-a last-window
unbind &
bind-key x lock-session
bind-key C-x lock-session
bind-key K confirm-before -p "Really kill window #W? (y/n)" kill-window
bind-key '"' choose-window
bind-key _ split-window
bind-key | split-window -h
bind-key M-1 select-pane -t 0
bind-key M-2 select-pane -t 1
bind-key M-3 select-pane -t 2
bind-key M-4 select-pane -t 3
答案2
我一直在使用 Screensource
命令来提取任何需要因机器而异的配置,即将其添加到.screenrc
:
source $HOME/.screenrc.local
然后将任何每台机器的配置添加到.screen.local
。