Чтобы скопировать текст в буфер обмена 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"
источник
stty intr=^Z
. Будьте осторожны с этой командой, можно установить обычный символ в качестве символа прерывания (если вы это сделаете, используйте ctrl-v, чтобы ввести его до исправления настройки). И не запутайтесь в том, какой ключ используется (например, ctrl-z обычно является ключом приостановки).^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"
работает просто отлично.Ответы:
Этот ответ не отвечает непосредственно на ваш вопрос о создании ярлыка. Но вот что я делаю.
Вы можете временно приостановить передачу событий клавиш / мыши в tmux, удерживая shift. Таким образом, вы можете нажать и удерживать Shift и использовать обычные ярлыки терминала / X, чтобы сделать копию. В моем случае, используя Terminator, я нажимаю shift, выделяю мышью все, что хочу, копируюCtrl+Shift+C
А в случае, если у вас есть разделенные панели, вы можете увеличить текущую панель с помощью клавиши масштабирования Prefix + zи выполнить операцию копирования. (проверено на tmux v1.8)
источник
Это не дает прямого ответа на ваш вопрос, но посмотрите на tmux-yank , как описано в разделе Использование системного буфера обмена в режиме vi-copy в tmux и Получение tmux для копирования буфера в буфер обмена . После установки
источник