tmux congela ao usar ctrl-prefix ctrl-y

tmux congela ao usar ctrl-prefix ctrl-y

Estou usando um arquivo .tmux.conf personalizado parecido com este:

unbind-key C-b
set -g prefix C-a
bind-key C-a send-prefix

set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

## CLIPBOARD selection integration
# Requires prefix key before the command key
# Copy tmux paste buffer to CLIPBOARD
bind C-y run "tmux show-buffer | xclip -i -selection clipboard"
# Copy CLIPBOARD to tmux paste buffer and paste tmux paste buffer
bind C-p run "tmux set-buffer -- \"$(xclip -o -selection clipboard)\"; tmux paste-buffer"

Estou usando ctrl+ a ctrl+ ypara copiar do buffer de cópia do tmux para a área de transferência. Mas toda vez que faço isso, o tmux congela e não aceita nenhuma entrada. Tentei usar ctrl+ qmas isso não ajuda.

O que posso fazer para evitar o congelamento do tmux, quais atalhos estão interferindo aqui? Também tentei o atalho ctrl+ a ctrl+ c, mesmo problema aqui.

Responder1

Se você digitar o xclipcomando na linha de comando, notará que ele não termina. Isso ocorre porque ele continua a aceitar entradas atéSTDINé feito. Por isso,STDOUTnunca fica fechado. Você pode resolver isso redirecionando oSTDOUTde xclippara /dev/null. Por exemplo:

bind y run "tmux save-buffer - | xclip -selection clipboard &>/dev/null"

Neste exemplo eu redirecionoSTDERRtambém, caso isso importe.

Responder2

xclipestá aguardando entrada, o que impede que o tmux receba entrada. O exemplo a seguir permite que o xclip seja executado em outro shell sem bloquear sua sessão tmux:

bind y run-shell -b "tmux save-buffer - | xclip -selection clipboard"

Eu até adicionaria uma mensagem para ajudar no seu fluxo de trabalho:

bind y run-shell -b "tmux save-buffer - | xclip -selection clipboard; tmux display-message \"Tmux buffer saved to clipboard\" "

Eu espero que isso ajude!

Responder3

bind y run-shell -b "cat << EOF | tmux save-buffer - | xclip -sel clipboard &>/dev/null"

você pode fazer isso desta forma, o EOF fecha o buffer após copiá-lo para a área de transferência com o xclip.

informação relacionada