tmux, urxvt и беды с копированием и вставкой…

Вопрос или проблема

Я запускаю 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:

  1. Измените строку в .tmux.conf:

    # Отключаем мышь в tmux
    set -g mouse off

    Этот шаг позволит использовать мышь так, как если бы вы работали без tmux. Однако, если вы все же хотите использовать возможности мыши в tmux для управления окнами и панелями, понадобится более сложный подход.

  2. Настройка копирования текста в 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.

Оцените материал
Добавить комментарий

Капча загружается...