Чтобы скопировать текст в буфер обмена X в tmux, я сейчас делаю следующее:
- перейти в режим выбора с prefix[
- начать выбор с space(используя
mode-keys vi
кстати) - выделите текст и нажмите enter
- скопировать буфер tmux в буфер обмена X, используя prefixctrl+c
(У меня есть отображение как bind C-c run "tmux show-buffer | xclip -selection clipboard -i"
Я пытаюсь устранить некоторые из этих шагов, делая сопоставление для режима выбора. Я пытался:
bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"
что дает мне и ошибку:
.. usage: bind-key [-cnr] [-t key-table] key command [arguments]
(Я не смог скопировать ошибку)
Как я могу это исправить?
РЕДАКТИРОВАТЬ: я понял, что я могу выбрать и скопировать в буфер tmux (первые 3 шага) с помощью мыши, как обычный выбор (хотя выделение не длится, он по-прежнему выбирает текст), а затем использовать следующую привязку для копирования в буфер обмена х :
bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"
(Я использовал этот метод, чтобы скопировать этот текст, и это было легко;)
обратите внимание, что -n
обозначает «без префикса», поэтому экранирование не требуется. если вас не смущает исчезающая изюминка, это аналогично обычному (общему пользовательскому интерфейсу) копированию.
это лучшее, что я придумал до сих пор ..
EDIT2: оказалось, что ctrl+cперекрывается с прерыванием процесса, поэтому я перешел ctrl+alt+cна сейчас. (не совсем понравилось)
EDIT3: в tmux 1.8 или около того добавлена поддержка добавления сочетаний клавиш в режиме копирования, так что теперь мое первое оригинальное намерение возможно с использованием чего-то вроде:
bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"
Эти две привязки позволяют копировать текст в буфер обмена при использовании enterили yзавершать копирование.
Я по-прежнему сохраняю эту строку на случай, если я сделаю копирование мышью и решу позже получить содержимое буфера tmux в буфер обмена:
bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
^c
в качестве ключа прерывания, поскольку я использую его чаще, чем копирование. Я также обновил ответ, чтобы отразить мое текущее решение этой проблемы.
bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"
концерт дает:Unknown command: run
bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"
работает просто отлично.
stty intr=^Z
. Будьте осторожны с этой командой, можно установить обычный символ в качестве символа прерывания (если вы это сделаете, используйте ctrl-v, чтобы ввести его до исправления настройки). И не запутайтесь в том, какой ключ используется (например, ctrl-z обычно является ключом приостановки).