O Tmux de alguma forma esquece o prefixo depois de um determinado bind de teclas

1

Eu não alterei o prefixo padrão, por exemplo, C-b . Eu adicionei a seguinte ligação de chave no meu tmux.conf

bind -n C-M-w send-keys M-w\; \
    run-shell "tmux save-buffer - | xclip -i -selection clipboard"

Basicamente eu queria que durante o modo de cópia C-b [ eu deveria ser capaz de copiar save-buffer para a área de transferência também. Funciona bem, mas apenas pela primeira vez. E depois que ele é executado uma vez, de alguma forma, ele desvincula magicamente o prefix e outras associações de teclas também. Não sei por que isso acontece.

Eu tenho uma configuração bastante simples do tmux, conforme abaixo:

# 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 status-keys vi
set -g history-limit 10000

setw -g mode-keys emacs
setw -g mode-mouse on
setw -g monitor-activity on

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

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

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

# Use Alt-vim keys without prefix key to switch panes
bind -n M-h select-pane -L
bind -n M-j select-pane -D 
bind -n M-k select-pane -U
bind -n M-l select-pane -R

# Use Alt-arrow keys without prefix key to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift arrow to switch windows
bind -n S-Left  previous-window
bind -n S-Right next-window

bind -n C-M-w send-keys M-w\; \
     run-shell "tmux save-buffer -  | xclip -i -selection clipboard"\; \
     set -g prefix 'C-b'

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

# Reload tmux config
bind r source-file ~/.tmux.conf
    
por Shivam 05.08.2014 / 22:58

1 resposta

4

Apenas substitua

bind -n C-M-w send-keys M-w\; \
     run-shell "tmux save-buffer -  | xclip -i -selection clipboard"\; \
     set -g prefix 'C-b

com

bind -n C-M-w send-keys M-w\; \
     run-shell "tmux save-buffer -  | xclip -i -selection clipboard >> /dev/null "\; \
     set -g prefix 'C-b

Depois de brincar com esse problema Obrigado a Severyn Kozak que sugere usar / dev / null

Eu acho que o problema em alguns comandos que não retornam saída ou status de saída como o xclip redirecionam a saída para / dev / null será suficiente para copiar do buffer de colar para a área de transferência.

Não consegui entender por que você usa as teclas Enviar e definir comandos de prefixo, mas para o tmux 1.8+ você deve usar o comando copy-pipe para copiar o texto selecionado para colar o buffer e a área de transferência

Copie e cole o método usando o emacs-mode desta resposta :

bind-key -n -t emacs-copy M-w copy-pipe "xclip -i -sel p -f | xclip -i -sel c "
bind-key -n C-y run "xclip -o | tmux load-buffer - ; tmux paste-buffer"

Usando o modo vi "prefixo C- [para inserir o modo de cópia > > v para realçar texto > > y para copiar texto para o buffer de armazenamento e a área de transferência > > prefixo p para colar":

set -g mode-keys vi
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-pipe "xclip -i -sel clip"
bind p paste-buffer
    
por 12.08.2014 / 11:07

Tags