Скопировать текст из tmux в WSL в буфер обмена Windows

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

Я настроил tmux в WSL и хочу улучшить интеграцию между ними.

Как выделить текст в tmux внутри WSL и скопировать его в буфер обмена Windows?

  • откройте файл ~/.tmux.conf и создайте его, если он не существует
  • включите режим мыши, добавив строку set -g mouse on (иначе придется выделять текст с помощью Ctl+[)
  • создайте сочетание клавиш для копирования буфера tmux в буфер обмена Windows:
    bind -n M-w run -b "tmux show-buffer | clip.exe"
    

С этой конфигурацией клавиш вы можете выделить текст с помощью мыши и скопировать его (в буфер tmux) используя Alt+w. (Если вы хотите выделить что-то и не хотите, чтобы это исчезло, удерживайте shift, отпуская кнопку мыши.) После этого нажмите Alt+w еще раз, чтобы скопировать буфер tmux в буфер обмена Windows.

Если вы хотите сделать то же самое на обычной системе Linux (без WSL), вы можете использовать xclip -selection clipboard вместо clip.exe, как показано здесь. Здесь команда в .tmux.conf будет

bind -n M-w run -b "tmux show-buffer | xclip -selection clipboard"

РЕДАКТИРОВАТЬ: После многочисленных проблем с буфером обмена в терминале Windows, который то открывается, то закрывается, кажется, достаточно установить set-option -g mouse on в ~/tmux.conf, чтобы в наши дни работало “копирование при выделении”.

Старый ответ:
Альтернативно, если вы используете терминал Windows, выделение текста с помощью мыши, удерживая shift, и копирование его с помощью Ctl + Insert всегда будут работать (даже через ssh) и не испортят разрывы строк.

Ответ или решение

Для того чтобы эффективно копировать текст из tmux, работающего в среде WSL (Windows Subsystem for Linux), в буфер обмена Windows, необходимо провести ряд конфигураций. Тmux, как известно, предоставляет мощные возможности для управления сессиями терминала, но его интеграция с Windows, особенно в контексте WSL, может требовать дополнительных настроек. Рассмотрим, как это можно осуществить.

Теория

Совместное использование tmux в среде WSL и Windows может предложить пользователям наилучшее из обоих миров: мощность Unix-подобной среды и доступ к ресурсам Windows. Однако, особенности взаимодействия WSL и Windows вызывают некоторые сложности при работе с буфером обмена, так как WSL1 и WSL2 изначально изолированы от родной Windows-системы, включая её буфер обмена. Это особенно ощутимо при использовании в сочетании с tmux, который управляет своими собственными буферами. Решение для копирования текста из tmux в буфер обмена Windows заключается в правильной настройке конфигурационного файла tmux и использовании командных утилит таких как clip.exe.

Пример

  1. Настройка конфигурационного файла tmux:

    • Откройте файл ~/.tmux.conf. Если он не существует, создайте его. Этот файл отвечает за пользовательские настройки tmux.
    • Для начала, добавьте поддержку работы с мышью, ввиду чего текст подборки может быть сделан с помощью мыши. Для этого добавьте строку:
      set -g mouse on

      Это позволит вам использовать мышь для выбора текстов внутри tmux. Важно отметить, что без этой настройки, вы сможете выбирать текст только с помощью комбинаций клавиш (например, Ctrl + [).

  2. Настройка копирования в буфер обмена Windows:

    • Добавьте следующую строку в ~/.tmux.conf для создания горячей клавиши, отвечающей за копирование текста из буфера tmux в Windows:
      bind -n M-w run -b "tmux show-buffer | clip.exe"

      Эта команда устанавливает сочетание клавиш Alt + w (где M означает “Meta”, обычно это Alt), которое автоматически отправит содержимое буфера tmux в буфер обмена Windows через clip.exe.

  3. Использование:

    • После настройки конфигурации, процесс копирования текста будет следующим:
      • Выберите текст внутри tmux с помощью мыши. Удерживайте Shift, чтобы текст не исчез при отпускании мыши.
      • Нажмите Alt + w, чтобы скопировать выделенный текст из буфера tmux в буфер обмена Windows.

Практическое Применение

Эти инструкции применимы в ситуациях, где необходима плавность перехода между работой в командной строке Linux в WSL и необходимостью вставки данных в Windows приложениях, таких как текстовые редакторы, браузеры или другие среды разработки.

Для пользования тем же функционалом на традиционной Linux-системе (без WSL), стоит заменить clip.exe на команду, работающую с буфером обмена X11, например xclip. В таком случае, заключительная строка конфигурации будет выглядеть так:

bind -n M-w run -b "tmux show-buffer | xclip -selection clipboard"

Альтернативные Методы

Редакция текста добавляет, что в современных версиях Windows Terminal достаточно активировать режим мыши с помощью параметра:

set-option -g mouse on

Это обеспечивает функцию "копирование при выделении", что заметно упрощает процесс.

Для тех, кто предпочитает более классические сочетания клавиш без использования специальных конфигураций, также возможно копировать текст, выделенный через комбинацию Shift и левую кнопку мыши, нажатием Ctrl + Insert.

Эти инструкции помогут повысить продуктивность и упростить работу для разработчиков и системных администраторов, которые ежедневно совмещают работу в WSL и Windows. Они обеспечивают более органичный рабочий процесс и экономят время, избавляя от необходимости вручную взаимодействовать с буфером обмена Windows.

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

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