如何使用鼠标滚动tmux?

时间:2014-06-04 00:12:09

标签: macos terminal tmux

我在使用Apple魔术鼠标的Terminal.app中的Mac OS X 1.9.3上使用tmux 1.8。我也在使用oh-my-zsh。

当tmux运行时,我无法使用鼠标滚动。它只是向上滚动整个终端窗口,超出了tmux的输出。

我在tmux.conf文件中尝试了这些设置但没有任何作用:

set -g mode-mouse on
setw -g mode-mouse on
set -g terminal-overrides 'xterm*:smcup@:rmcup@' 

我确保重新加载tmux.conf并且还会杀死一个会话并创建新会话以确保。它仍然无效。

请帮忙。这是我的整个tmux.conf

set -g default-terminal "xterm-256color"
set -g history-limit 10000
set -g status-interval 60

# status config
set -g status-utf8 on
set -g status-position top
set -g status-fg colour15
set -g status-bg colour24


# status line left side
set -g status-left-length 40
set -g status-left "#[fg=colour214,bold] #S #[fg=colour45] "

# status line right side
set -g status-right "#(~/.dotfiles/bin/tmux_battery_status) | %I:%M %p | %D "

# no more machine counting
set -g base-index 1
setw -g pane-base-index 1

# enable activity alerts
setw -g monitor-activity on
set -g visual-activity on

# window list colors
setw -g window-status-fg colour250
setw -g window-status-bg default
setw -g window-status-format " #I #W "
setw -g window-status-current-format "  #W "
setw -g window-status-current-fg colour118
setw -g window-status-current-bg default
setw -g window-status-activity-attr underscore,bold

# center the window list
set -g status-justify left

# pane colors
set -g pane-border-fg colour24
set -g pane-border-bg default
set -g pane-active-border-fg colour15
set -g pane-active-border-bg colour15

# command / message line colors
set -g message-fg colour15
set -g message-bg black
set -g message-attr bright

# rebind clear screen with Ctrl-l
bind C-l send-keys 'C-l'

# reload tmux conf
bind r source-file ~/.tmux.conf \; display "Reloaded tmux.conf!"

# setup reattach-to-user-namespace for copy and paste
set-option -g default-command "reattach-to-user-namespace -l $SHELL"

# use vim keybindings in copy mode
setw -g mode-keys vi

setw -g mode-mouse on
setw -g mouse-utf8 on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mouse-resize-pane on

# setup 'v' to begin selection as in vim
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

# update default binding of 'enter' to also use copy-pipe
unbind -t vi-copy Enter
bind -t vi-copy enter copy-pipe "reattach-to-user-namespace pbcopy"

# splitting panes
bind | split-window -h
bind - split-window -v

# fast resizing (-r for repeatable)
bind -r h resize-pane -L 5
bind -r j resize-pane -D 5
bind -r k resize-pane -U 5
bind -r l resize-pane -R 5

# tmux navigator with vim (-n allows binding without tmux prefix)
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-h) || tmux select-pane -L"
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-j) || tmux select-pane -D"
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-k) || tmux select-pane -U"
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-l) || tmux select-pane -R"
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys 'C-\\') || tmux select-pane -l"

4 个答案:

答案 0 :(得分:14)

我弄明白了这个问题。如果使用默认的Terminal.app,则不会将鼠标事件传递给终端内运行的应用程序。要解决此问题,您需要安装MouseTerm,这需要安装SIMBL。您可以在此处找到所有说明:

https://bitheap.org/mouseterm/

请注意,如果您使用的是Mac OS X 10.9,当您尝试运行MouseTerm的安装脚本时,它会说该文件已损坏。要解决此问题,只需手动将捆绑文件复制到SIMBL插件文件夹并重新启动Terminal.app即可。您可以在此路径中找到SIMBL插件文件夹:

/ Library / Application Support / SIMBL / Plugins

答案 1 :(得分:11)

从OS X 10.11(Beta)El Capitan开始,不需要SIMBL或MouseTerm。

我有同样的问题,但你在OP中回答了这个问题:

set -g mode-mouse on
setw -g mode-mouse on
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

是10.11中使用Terminal.app所需要的 - 注意其他终端仿真器可能仍然需要SIMBL;它是对终端的更新,这意味着它似乎不再需要,而不是由于OS X本身更新。

答案 2 :(得分:7)

Tmux 2.1有一些变化

  • 鼠标模式已被重写。现在不再有以下选项:

    • 小鼠调整大小窗格
    • 鼠标选择窗格
    • 鼠标选择窗口
    • 模式小鼠

    相反,只有一个选项:'鼠标'打开鼠标支持 完全。

我猜那将是set -g mouse on

答案 3 :(得分:1)

在没有任何配置的情况下进行滚动的简单方法就是按 Ctrl-B然后向上/向下翻页。