Вопрос или проблема
Я запускаю tmux внутри urxvt. Я бы хотел выделять и копировать текст с помощью левой кнопки мыши и вставлять его с помощью средней кнопки мыши — я очень старой школы.
Я почти настроил tmux-yank, но нужно нажимать SHIFT+Mouse 1 для выделения, затем нажать y
… Это много нажатий клавиш.
Кто-нибудь знает, как добиться более простого поведения в работе?
Вот некоторые версии:
; tmux -V
tmux 2.2
; urxvt256c-ml --version
urxvt: "version": неизвестная или неправильно сформированная опция.
rxvt-unicode (urxvt256c-ml) v9.21 - выпущено: 31-12-2014
опции: perl,xft,styles,combining,blink,iso14755,unicode3,encodings=eu+vn+jp+jp-ext+kr+zh+zh-ext,fade,transparent,tint,pixbuf,XIM,frills,selectionscrolling,wheel,slipwheel,smart-resize,cursorBlink,pointerBlank,scrollbars=plain+rxvt+NeXT+xterm
[…]
; awesome --version
awesome v3.5.9 (Mighty Ravendark)
• Сборка: 07 марта 2016 18:43:56 для x86_64 на gcc версии 6.0.0 (mockbuild@)
• Скомпилировано с Lua 5.3.2 (работает с Lua 5.3)
• Поддержка D-Bus: ✔
Если кто-то другой тоже испытывает трудности с этим, вот мой файл ~/.tmux.conf
. Я использую менеджер плагинов tmux, так что установите его сначала.
# ./tmux.conf
# Powerline…
run-shell "powerline-daemon -q"
source '~/.local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf'
# VI-режим…
setw -g mode-keys vi
# C-b не подходит — Vim использует это
set-option -g prefix C-a
bind-key C-a last-window
# Установить стили режимов окон
set -g mode-style "fg=black,bg=colour69"
# Перенумерация окон
set -g renumber-windows on
# Автоматическое переименование.
setw -g automatic-rename
# Позволяет быстрее повторять нажатия клавиш
set -s escape-time 0
# История прокрутки
set -g history-limit 30000
# Мышь
set -g mouse on # ← Это предотвращает правильное поведение по умолчанию…
# Список плагинов
set -g @plugin 'tmux-plugins/tpm' # ← Менеджер плагинов tmux.
set -g @plugin 'nhdaly/tmux-scroll-copy-mode' # ← адекватная прокрутка.
set -g @plugin 'tmux-plugins/tmux-yank' # ← Копирование.
set -g @shell_mode 'vi' # опция tmux-yank.
set -g @yank_selection 'primary' # опция tmux-yank.
# Инициализация менеджера плагинов TMUX (оставьте эту строку в самом низу tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
# EOF
Таким образом, вы можете использовать мышь, чтобы выделять любой текст. Если вы нажмете y
перед отпусканием левой кнопки мыши, выделение будет скопировано в основной буфер, и вы сможете вставить его с помощью средней кнопки мыши.
Ответ или решение
Использование tmux
внутри urxvt
для копирования и вставки текста с помощью мыши может оказаться непростой задачей для пользователей, которые привыкли к старым методам взаимодействия с терминалом. Основная проблема заключается в настройке рабочего окружения так, чтобы было удобно выделять текст левой кнопкой мыши и вставлять его средней кнопкой, не прибегая к излишнему количеству клавишных комбинаций.
Теория
На первый взгляд, задача может показаться простой, но в реальности она связана с особенностями работы tmux
и графического терминала urxvt
. tmux
— это мощный инструмент для управления несколькими терминальными сессиями, который может функционировать в различных условиях, в том числе и с поддержкой мыши. Однако при включенной поддержке мыши поведение терминала может измениться, что приводит к конфликту с традиционным механическим копированием/вставкой.
В urxvt
, как и в большинстве UNIX-подобных систем, для копирования текста по умолчанию используется выделение его левой кнопкой мыши, а для вставки — средней. Однако включение режима мыши в tmux
меняет это стандартное поведение, так как теперь tmux
перехватывает события мыши для собственных нужд, например, для навигации по истории.
Пример
Ваша конфигурация .tmux.conf
включает строку set -g mouse on
, которая разрешает tmux
использовать возможности мыши внутри сессии. Это приводит к тому, что стандартное поведение переключается на режим tmux
, в котором необходимо использовать сочетание клавиш для копирования, вместо простого выделения мышью.
Чтобы упростить этот процесс, вы уже установили tmux-yank
, плагин, который, среди прочего, позволяет копировать текст по комбинации клавиш. Но необходимость нажимать y
перед отпущением кнопки является излишком и требует сокращения.
Применение
Для достижения необходимого поведения сначала нужно изменить использование мыши в tmux
. Один из способов — отключить поддержку мыши в tmux
, что позволит вернуть стандартное поведение urxvt
:
-
Измените строку в
.tmux.conf
:# Отключаем мышь в tmux set -g mouse off
Этот шаг позволит использовать мышь так, как если бы вы работали без
tmux
. Однако, если вы все же хотите использовать возможности мыши вtmux
для управления окнами и панелями, понадобится более сложный подход. -
Настройка копирования текста в
tmux
с использованием мыши:Здесь потребуется комбинация использования других инструментов и модификация плагинов, чтобы обеспечить нужное поведение без отключения режима мыши.
-
Убедитесь, что упаковщик пакетов
tpm
установлен и корректно работает:git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
-
Проверьте, что ваши существующие плагины рабочие, и настройте их таким образом, чтобы они более точно соответствовали функционалу копирования, например, перепроверьте опции плагина
tmux-yank
:set -g @yank_selection 'primary' # цель копирования - primary буфер
-
Приложите небольшие усилия для поиска альтернативных плагинов или скриптов, которые могут более точно удовлетворять ваши требования. Используя возможности
urxvt
и внешние скрипты, можно настроить пользовательские биндинги, которые будут корректировать поведение мыши для нужд копирования.
-
Заключением может служить то, что для достижения простоты в копировании текста из tmux
в urxvt
, может потребоваться некоторое время и усилия для настройки своего терминального окружения. Однако после всех изменений и настроек вы сможете использовать старые привычные методы работы с текстом при работающем внутри терминала tmux
.