6

Я использую пользовательский файл .tmux.conf, который выглядит следующим образом:

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"

Я использую Ctrl+A Ctrl+Y , чтобы скопировать из буфера tmux копирования в буфер обмена. Но каждый раз, когда я делаю это, tmux зависает и не принимает никаких входных данных. Я пытался использовать Ctrl+Q, но это не помогает.

Что я могу сделать, чтобы предотвратить зависание tmux, какие ярлыки мешают здесь? Я также попытался контекстное Ctrl+A Ctrl+C, та же проблема здесь.

2 ответа2

7

Если вы введете команду xclip в командной строке, вы заметите, что она не заканчивается. Это потому, что он продолжает принимать входные данные, пока STDIN не будет сделано. Таким образом, STDOUT никогда не закрывается. Вы можете решить эту проблему, перенаправив STDOUT xclip в /dev/null . Например:

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

В этом примере я также перенаправляю STDERR на всякий случай.

1

xclip ожидает ввода, который блокирует tmux от получения ввода. Следующий пример позволяет xclip работать в другой оболочке, не блокируя сеанс tmux:

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

Я бы даже добавил сообщение, чтобы помочь вашему рабочему процессу:

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

Надеюсь, это поможет!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .