Tmux mouse copy-mode перескакивает вниз

Я использую tmux в сеансе ssh. Я использую несколько окон и окон.

У меня включен режим мыши, который отлично работает до сих пор.

Когда я выбираю текст, он автоматически копируется в tmux-буфер, и окно переходит к концу. Так что, если я прокручиваю вверх и клик на sth, он прыгает до конца... Когда я переключаюсь между панелями, запускается копия comand, и выход идет до конца. Мне действительно не нравится это поведение, и я бы предпочел нажимать кнопку, чтобы скопировать или щелкнуть q, чтобы закончить режим копирования или sth.

Можно ли отключить автокопирование//автоматический переход до конца при отпускании кнопки мыши?

Я запускаю tmux 2.0 на сервере через ssh. В терминаторе на клиенте.

# config                                                                        
#{{{                                                                            

# 0 is too far from ` ;)                                                        
set -g base-index 1                                                             

# Automatically set window title                                                
# set-window-option -g automatic-rename on                                      
# set-option -g set-titles on                                                   

set -g default-terminal screen-256color                                         
set -g history-limit 10000                                                      

set -g status-keys vi                                                           
setw -g mode-keys vi                                                            
setw -g mode-mouse on                                                           
set -g mouse-select-window on                                                   
set -g mouse-select-pane on                                                     
set -g mouse-resize-pane on                                                     

# No delay for escape key press                                                 
set -sg escape-time 0                                                           

#}}}                                                                            

# bind keys                                                                     
#{{{                                                                            
# Reload tmux config                                                            
bind r source-file ~/.tmux.conf                                                 

# remap prefix to Control + a                                                      
set -g prefix C-a                                                                  
# bind 'C-a C-a' to type 'C-a'                                                     
bind C-a send-prefix                                                               
unbind C-b                                                                         

# switch tabs with <b n>                                                           
bind b previous-window                                                             

# vi like paste                                                                    
bind-key p paste-buffer                                                            

# quick pane cycling                                                               
unbind a                                                                           
bind a select-pane -t :.+                                                          

bind-key v split-window -h                                                         
bind-key s split-window -v                                                         

bind-key J resize-pane -D 10                                                       
bind-key K resize-pane -U 10                                                       
bind-key H resize-pane -L 10                                                       
bind-key L resize-pane -R 10                                                       

bind-key M-j resize-pane -D 2                                                      
bind-key M-k resize-pane -U 2                                                      
bind-key M-h resize-pane -L 2                                                      
bind-key M-l resize-pane -R 2                                                      

# Vim style pane selection                                                         
bind h select-pane -L                                                              
bind j select-pane -D                                                              
bind k select-pane -U        
bind -n M-Down select-pane -D                                                   

# find asci keycodes with "sudo showkey -a" - works only tmux >1.7              
# us-keyboard like [ ]                                                          
bind-key -r 0xc3 display 'c3 prefix binding hack'                               
bind-key -r 0xb6 copy-mode # ö                                                  
bind-key -r 0xa3 paste-buffer # ä                                               
# us { }                                                                        
bind-key -r 0x96 swap-pane -U # Ö - swap pane to prev position                  
bind-key -r 0x84 swap-pane -D # Ä - to next pos  

#}}}                         

Ответ 1

по tmux 2.2 доступен выбор-выбор-функция -x. При следующих параметрах tmux остается в режиме копирования после выбора. Выберите тот, который соответствует настройке вашего режима.

bind-key -t vi-copy MouseDragEnd1Pane copy-selection -x
bind-key -t emacs-copy MouseDragEnd1Pane copy-selection -x

Ответ 2

Как и в tmux 2.5, вы должны использовать

unbind -T copy-mode-vi MouseDragEnd1Pane

Ответ 3

i смог получить выбор мыши, чтобы остановить прыжок на дно в tmux (версия 2.2), добавив следующее к моему ~/.tmux.conf:

setw -g mouse on
setw -g mode-keys vi
unbind -t vi-copy MouseDragEnd1Pane

caveat: это имеет побочный эффект включения режима vi.

я нашел этот вопрос, чтобы быть релевантным, и нашел конфигурацию выше в эти dotfiles.

Ответ 4

Похоже, что обновление до tmux 2.1 может решить вашу проблему.

В версии 2.1 они изменили режим мыши, мышь-select-window/pane и т.д. с помощью одного переключателя мыши. Теперь действия мыши генерируют ключевые события, которые могут отображаться как обычные ключи.

Ответ 5

Следующее сработало для меня. Благодаря @stagebind на @stagebind !

Для конфигурации в режиме vi https://github.com/tmux/tmux/issues/140#issuecomment-321144647:

unbind -T copy-mode-vi MouseDragEnd1Pane

Для конфигурации без режима vi https://github.com/tmux/tmux/issues/140#issuecomment-302742783:

# 2.4+
unbind -T copy-mode MouseDragEnd1Pane
# 2.2 - 2.3
unbind -t vi-copy MouseDragEnd1Pane

Мне потребовалось некоторое время, чтобы получить правильный ответ.

Я также использую Alacritty и не могу включить копирование при выборе мыши из-за проблемы с MouseDragEnd1Pane как описано в: https://github.com/jwilm/alacritty/issues/1002.

Выделение текста мышью, а затем, если мне нужно, скопировать его с помощью клавиши y работает для меня с этим конфигом:

bind -T copy-mode-vi y send -X copy-pipe "reattach-to-user-namespace pbcopy"\; display-message "copied to system clipboard"

Полная конфигурация для копирования и вставки с помощью мыши и поддержки связывания клавиш vi выглядит следующим образом:

set-option -g default-command "reattach-to-user-namespace -l bash"
set -g mouse on

bind P paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send -X copy-pipe "reattach-to-user-namespace pbcopy"\; display-message "copied to system clipboard"
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle

## don't jump to bottom on mouse select - when vi-mode enabled - 2.4+
#unbind -T copy-mode MouseDragEnd1Pane
## don't jump to bottom on mouse select - when vi-mode enabled - 2.2 - 2.3
#unbind -t vi-copy MouseDragEnd1Pane
## don't jump to bottom on mouse select - when vi-mode enabled
unbind -T copy-mode-vi MouseDragEnd1Pane

Я использую OS X.

Ответ 6

Я бы сказал, что самый простой способ в настоящее время - просто использовать плагин tmux-yank и добавить параметр конфигурации yank_action:

# ~/.tmux.conf

set -g @yank_action 'copy-pipe' # or 'copy-pipe-and-cancel' for the default

Кроме того, tmux-yank также управляет различиями между буфером обмена ОС (Linux, macOS, WSL) и добавляет несколько очень полезных ярлыков для копирования текущего содержимого командной строки и cwd. Настоятельно рекомендуется.