Как создать отдельную команду для копирования из буфера обмена tmux в буфер обмена Linux?

Как создать отдельную команду для копирования из буфера обмена tmux в буфер обмена Linux?

Я пытаюсь эмулировать в Linux следующие привязки, которые работают в OSX:

# Copy and paste from system clipboard
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"

То есть, я хочу связать команду для явного копирования буфера tmux в системный буфер обмена и другую команду для обратного копирования. Янехочу автоматически использовать vi-select для копирования в системный буфер обмена из tmux, так как многие изсуществующие ответыадрес.

Я попробовал следующие привязки (по одной за раз).

bind C-c run "tmux save-buffer - | xclip -in -selection clipboard"
bind C-c run "tmux show-buffer | xclip -sel clip -i"

Оба они, кажется, работают правильно при первом использовании, но затем появляется серьезный побочный эффект: отключение всех моих сочетаний клавиш tmux после использования.

То есть ни одна из моих комбинаций клавиш tmux не работает после первого копирования.

Как я могу скопировать что-либо из буфера обмена tmux в системный буфер обмена и наоборот, не лишая себя возможности выполнять дальнейшие команды tmux?

решение1

xclip имеет ошибку, из-за которой он не закрывает stdout, что означает, что tmux не знает, что он закончил. Вот почему вы не можете запустить какие-либо дальнейшие команды tmux после первого копирования. Так что вы можете либо:

1) Используйте xsel вместо xclip, который не страдает от той же проблемы.

2) Перенаправить stdout /dev/nullследующим образом:xclip ... >/dev/null

3) Используйте run -bвместо run, чтобы tmux не ждал завершения xclip.

Связанный контент