系统:
- ubuntu 20.04
- Linux 5.13.0-39-通用
- 多路复用器3.0a
问题:
- 使用 tmux 时,我从主机建立的任何直接连接的 ssh 会话,我无法再使用向上箭头,它在远程主机上无法识别。如果我在 tmux 之外建立 ssh 会话,则不会发生此问题。另外,如果我 ssh 到另一台主机,然后再到我想使用向上箭头的主机,则不会发生此问题。
- 使用 tmux 时,而不是在 ssh 会话中,向上箭头有效。但是,我无法再使用 tmux-action-combo +
Ctrl+up
来调整会话大小。 tmux-action-combo + 不会发生这种情况Alt+up
,它将按预期调整我的屏幕大小。
注意:所有其他箭头键和 tmux-action-combo 按钮都可以正常工作,没有任何问题。
我有一种感觉,这必须处理我从旧版本 tmux 导入的键绑定。
配置:
这是我正在使用的配置.tmux.conf
set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins/'
# This session is allow Mobaxterm sessions to scroll without having to hold SHIFT after reattaching
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
# Set default TERM type
set -g default-terminal "screen-256color"
set-option -ga terminal-overrides ",*256col*:Tc"
# Enable mouse control
set -g mouse on
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
#set -g status off
set-option -g status-position top
set -sg escape-time 0
set -g focus-events on
# enable vim bindings for copy mode
set-window-option -g mode-keys vi
# copy to system clipboard
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind -T copy-mode-vi C-j send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind-key -n C-h select-pane -L
bind-key -n C-j select-pane -D
bind-key -n C-k select-pane -U
bind-key -n C-l select-pane -R
#Copy and paste from terminal (non-vim)
bind-key -T copy-mode C-w send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind-key -T copy-mode M-w send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind-key -T copy-mode-vi C-j send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -i -selection clipboard > /dev/null 2>&1"
bind p paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle
unbind '"'
unbind %
bind n split-window -v -c '#{pane_current_path}'
bind m split-window -h -c '#{pane_current_path}'
bind c new-window -c '#{pane_current_path}'
bind r command-prompt "respawn-pane -k" \
#tmux sync all screens in windows
bind -n C-y setw synchronize-panes
###########
# Plugins #
###########
#Install Plugins
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
#Plugin: tmux-resurrect
set -g @resurrect-processes ':all:'
set -g @resurrect-strategy-vim 'session'
set -g @resurrect-capture-pane-contents 'on'
#Plugin: tmux-continuum
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'
set -g status-right 'Continuum status: #{continuum_status}'
#Initalize TMUX plugin manager
run '~/.tmux/plugins/tpm/tpm'
以下是 tmux-action-combo +?
中出现的内容:
bind-key -T copy-mode Up send-keys -X cursor-up
bind-key -T copy-mode M-Up send-keys -X halfpage-up
bind-key -T copy-mode C-Up send-keys -X scroll-up
我在这里缺少什么?为什么 tmux 不允许我Up
在 ssh 会话中使用,或使用 tmux-action-combo + 调整窗格大小Up
?
答案1
弄清楚了。
我上面定义的两个问题需要重新定义。实际问题如下:
- 在 ssh 会话中时杜松主机,向上箭头键不再被识别。
- 无法识别 Ctrl+Up 组合键。
问题1的解决方案:
原因:Juniper 主机无法识别$TERM
tmux 窗格正确使用的值,并且不支持向上或向下箭头键。
解决方案:
我删除了两个术语设置,并将术语设置为xterm-256color
(我的 Ubuntu 实例的默认值)。这解决了问题:
# Set default TERM type
set -g default-terminal "xterm-256color"
# set -g default-terminal "screen-256color"
# set-option -ga terminal-overrides ",*256col*:Tc"
问题2的解决方案:
原因:当我直接从 Ubuntu 盒子使用 tmux 时,没有发生这个问题。当我从 PC 进行 VNC 时,确实发生了这个问题。经过更多故障排除后,我发现这个问题是由我使用 VNC 客户端的主机上的另一个应用程序引起的,该应用程序干扰了“Ctrl+Up”组合键,这意味着组合键永远不会通过 VNC 会话发送。
解决方案: 删除应用程序上干扰的组合键后,组合键“Ctrl+Up”已通过 VNC 客户端正确发送,并再次在 tmux 上运行。