PQ
PQ.Hosting

Валюта

Копирование и вставка в tmux: vi-режим, системный буфер и xclip

Автор
PQ
18 марта 2026
4 мин чтения
205 просмотров
Копирование и вставка в tmux: vi-режим, системный буфер и xclip

Первые полчаса с tmux всегда одинаковые: Ctrl+C ничего не копирует, Ctrl+V ничего не вставляет, выделение мышью исчезает. Это не баги — это архитектура. tmux хранит скопированное в собственном буфере, изолированном от системы. Как только понимаешь эту логику — всё встаёт на место.

Два буфера которые не видят друг друга

Когда вы копируете текст в браузере или редакторе — он попадает в системный clipboard (X11 на Linux, Pasteboard на macOS). tmux не знает об этом буфере ничего.

Когда вы копируете текст внутри tmux — он попадает в paste buffer tmux. Это отдельное хранилище которое не связано с системным clipboard.

Именно поэтому текст скопированный в tmux не вставляется в браузер. И текст из браузера не вставляется через Ctrl+b ]. Для синхронизации нужна явная настройка — о ней в конце.

Включить vi-режим навигации

По умолчанию в copy-mode работают emacs-клавиши. Переключиться на vi — добавить в ~/.tmux.conf:

set-window-option -g mode-keys vi

Применить сразу без перезапуска tmux:

Ctrl+b  :source-file ~/.tmux.conf

Войти в copy-mode и выделить текст

Войти в copy-mode:

Ctrl+b  [

Курсор стал активным — теперь можно перемещаться по истории вывода. Начать выделение:

Space

Переместить курсор к концу нужного фрагмента. Скопировать в буфер tmux и выйти:

Enter

Вставить в текущую панель:

Ctrl+b  ]

Навигация в copy-mode: таблица

Клавиша Действие
h j k l Движение по символам и строкам
w / b Слово вперёд / назад
0 / $ Начало / конец строки
G Конец буфера (самый свежий вывод)
g g Начало буфера
Ctrl+u / Ctrl+d Пол-экрана вверх / вниз
/ + текст + Enter Поиск вниз
? + текст + Enter Поиск вверх
n / N Следующее / предыдущее совпадение
q Выйти из copy-mode

Прямоугольное выделение

Выделять не построчно а блоком колонок — полезно для таблиц и выровненного вывода:

Войти в copy-mode, затем начать прямоугольное выделение:

Ctrl+v

Двигать курсор стрелками или hjkl, затем скопировать:

Enter

История буферов

tmux не хранит один скопированный фрагмент — он накапливает историю. Посмотреть все буферы:

tmux list-buffers

Вывести содержимое последнего:

tmux show-buffer

Вставить из конкретного буфера по номеру:

tmux paste-buffer -b 0

Сохранить буфер в файл — удобно когда нужно вытащить длинный вывод команды:

tmux save-buffer ~/output.txt

Синхронизация с системным clipboard: Linux

Чтобы Enter в copy-mode одновременно копировал и в буфер tmux и в X11 clipboard — добавить в ~/.tmux.conf:

bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"

Установить xclip если ещё нет:

sudo apt install xclip

Альтернатива через xsel:

bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel --clipboard --input"

Синхронизация с системным clipboard: macOS

На macOS xclip не нужен — есть встроенный pbcopy:

bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"

Мышь: выделение без copy-mode

Включить мышь:

set -g mouse on

Теперь выделение мышью автоматически копирует в буфер tmux. При отпускании кнопки — текст в буфере.

Проблема: с включённой мышью прокрутка терминала перехватывается tmux, приложения вроде less перестают прокручиваться нативно. Обойти — зажать Shift при выделении. Тогда мышь работает в режиме терминала минуя tmux.

Вставить текст из системного clipboard в tmux

Скопировали снаружи (браузер, другое приложение) — вставить в tmux:

На Linux:

Shift+Insert

Или сочетание вашего терминального эмулятора: Ctrl+Shift+V в большинстве.

На macOS в iTerm2 или Terminal.app:

Cmd+V

Готовая конфигурация

Весь блок для ~/.tmux.conf — vi-режим, мышь, синхронизация с clipboard через y и через мышь:

set-window-option -g mode-keys vi
set -g mouse on

bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe "xclip -selection clipboard -i"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"

v — начать выделение как в vim. y — скопировать не выходя из copy-mode. Enter — скопировать и выйти. MouseDragEnd1Pane — мышь тоже отправляет в clipboard.

Для macOS: заменить xclip -selection clipboard -i на pbcopy.

Шпаргалка

Задача Клавиши / команда
Войти в copy-mode Ctrl+b [
Начать выделение Space
Прямоугольное выделение Ctrl+v
Скопировать и выйти Enter
Вставить из буфера Ctrl+b ]
Список всех буферов tmux list-buffers
Содержимое буфера tmux show-buffer
Сохранить буфер в файл tmux save-buffer ~/out.txt
Вставить буфер №0 tmux paste-buffer -b 0
Поиск вниз в copy-mode /текст + Enter
Выйти из copy-mode q



Поделиться статьей

Похожие статьи