Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [70]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [40]
Python [3]
Магнитольное [44]
Commodore64 [14]
Игровые приставки [2]


 
Дневник (2017 » Июль » 6 в 06:08)
GNU/Linux tmux: оконный менеджер для консоли

Tmux позволяет разбить консоль на любое количество подокон, перемещаться между ними, менять размер, и в каждом запускать обычные приложения, как в обычном терминале.

Для примера на скриншоте стандартный терминал, с загруженным в него tmux, о чём свидетельствует зелёная полоса внизу. Экран разбит на три окошка, в верхнем mc, в нижнем левом vim с открытым конфигом tmux, и в третьем окне запущен скринсейвер cmatrix. В рабочей ситуации обычно два окна, в одном vim, в другом запущенная программа на python.


Установка в Manjaro Linux:
yaourt -S tmux libevent
tmux # ЗАПУСК

Конфиг: ~/.tmux.conf

При запуске tmux создаёт активную сессию и окно, его можно разделить на множество мелких.  Либо добавить окон и переключаться между ними. Сессий тоже может быть много, и между ними тоже можно переключаться. Клиенты tmux сессий с разных tty могут работать в общей сессии. Если один из них сменит сессию, то она сменится только у него. Имя текущей сессии отображается слева внизу в квадратных скобках. Недостаток — непривычным становится скроллинг. Необходимо сперва войти в режим копирования (Ctrl+b PgUp)


УПРАВЛЕНИЕ

Делится на три типа: 
  1. Горячие клавиши после префикса Ctrl+b
  2. Внутренняя командная строка, вызываемая через Ctrl+b : (^b и двоеточие)
  3. Выполнение tmux с ключами


ГОРЯЧИЕ КЛАВИШИ


ctrl-b c       создать новое окно
ctrl-b $       переименовать сессию
ctrl-b s       Вывести список активных сессий
ctrl-b w       Вывести список активных окон (со всех сессий)
ctrl-b (       перейти к предыдущей сессии
ctrl-b )       перейти к следующей сессии
ctrl-b n       перейти к следующему окну
ctrl-b p       перейти к предыдущему окну
ctrl+b 0...9   перейти к окну по номеру

ctrl+b %       разделить окно на две панели по вертикали
ctrl+b "       разделить окно на две панели по горизонтали
ctrl+b x       закрыть панель
ctrl+b &       закрыть окно

ctrl+b курсор  перемещение между субокнами (можно забиндить в конфиге hjkl в стиле vim)
ctrl+b Ctrl + курсор   изменения размера текущего субокна на знакоместо
ctrl+b Alt + курсор    изменения размера текущего субокна на пять знакомест

ctrl+b alt+u, Перезагрузка переменных (TMUX environment reload)

Режим копирования и скроллинг:

Ctrl+b PgUp    вход в режим копирования, после чего PgUp/PgDn и стрелки — скроллинг вверх и вниз, q - выход.
Ctrl+b z       zoom текущей панели на весь экран и обратно. Удобно копипастить мышью.
Ctrl+b d       отключиться от текущей сессии.
Ctrl+b I       (пере)установить плагины

Выделение и копирование во внутренний буфер:

ctrl+b [       Перейти в режим копирования
ctrl+пробел    выделяем то что хотим копировать
alt+w          помещаем скопированное в буфер
ctrl + b ]     достаем из буфера

Выделение мышью:
После выделения, когда вы отпускаете кнопку мыши, выделенный текст копируется во внутренний буфер обмена tmux. Затем вы можете вставить этот текст, используя Ctrl+B ].


ВНУТРЕННЯЯ КОМАНДНАЯ СТРОКА

:new                                # создать новую сессию
:new -s name                   # создать новую сессию name
:rename newname            # переименовать сессию в newname
:source ~/.tmux.conf        # перечитать конфиг
:source-file ~/.tmux.conf
:rotate-window                 # циклически перемещать содержимое по субокнам


КЛЮЧИ TMUX

man tmux                    # Документация
tmux list-commands   # Список поддерживаемых комманд
tmux list-clients          # Вывести список подключённых клиентов
tmux                            # без параметров будет создана сессия 0
tmux new -s name      # создать новую сессию name
tmux new -s name -d  # создать новую сессию name изнутри сеанса tmux
                                    # без -t будет ошибка: sessions should be nested with care, unset $TMUX to force
tmux new-session -c /path/to -s name   # создать сессию name с текущим путём по умолчанию /path/to

tmux ls                           # вывести список активных сессий
tmux attach                    # Подключение к единственной, либо последней созданной сессии
tmux attach -t name      # Подключение к сессии name
tmux detach                   # отключение от сессии
tmux kill-server             # удалить все сессии
tmux kill-session -t name       # удалить сессию name
tmux switch-client -t name    # Переключиться к сессии name
tmux source ~/.tmux.conf     # перечитать конфиг

Вкусности:

tmux attach || tmux new         # Сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует. Если такого ещё нет — создаёте новый.
tmux has-session -t hermit && tmux attach-session -t hermit  # подключиться к сессии hermit, если она существует.


# Послать на второе субокно последовательность нажатий клавиш:
# https://blog.damonkelley.me/2016/09/07/tmux-send-keys/

tmux send-keys -t 1 "# Wake up, Neo!" Enter  
# панели можно указывать относительно:
tmux send-keys -t bottom-left "# Wake up, Neo!" Enter  
# послать в последнюю активную панель:
tmux send-keys -t ! "# Wake up, Neo!" Enter  
 




КОНФИГ ~/.tmux.conf:
set -g default-terminal "screen-256color"
set -g history-limit 20000

setw -g mouse on

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

bind -r H resize-pane -L 10
bind -r J resize-pane -D 10
bind -r K resize-pane -U 10
bind -r L resize-pane -R 10

bind -n C-k send-keys -R C-l \; clear-history

Последняя строка позволяет очистить доступную по PgUp историю окна. Сперва модификатор Ctrl+b, затем вызов clear-history по Ctrl+k

Пример практического использования tmux:
Делим терминал на два окна по вертикали. В левом запускается редактор vim с исходником test.py на Python, в правом запускается скрипт на bash автоматически выполняющий test.py при изменении даты его сохранения. Bash скрипт вводить в одну строку! В результате в левом окне пишется код, при каждом его сохранении в правом он автоматически исполняется:
n="test.py"; while true; do inotifywait -qqe close_write $n; 
pkill -f 'python3 $n'; clear; python3 $n; done




ССЫЛКИ:
  1. Шпаргалка по работе с Tmux (терминальный мультиплексор)
    https://habrahabr.ru/post/327630/
  2. Краткая шпаргалка по tmux
    https://habrahabr.ru/post/126996/
  3. Приручаем Tmux для повседневных нужд
    https://habrahabr.ru/post/165437/
  4. Автоматическое восстановление сессии
    https://www.homeonrails.com/2015/07/tmux-slash-avtomatichieskoie-vosstanovlieniie-siessii/
  5. Создать новый tmux сессии в сессии tmux
    https://coderoad.ru/16398850
  6. Полезная шпаргалка по комстроке
    https://losst.ru/shpargalka-po-tmux


Видео урок:


Категория: GNU/Linux | Просмотров: 1387 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 4.

12.09.2021 03:53
1 harushima
0  
Как дублировать внутренний буфер обмена в системный X-Server

vim ~/.tmux.conf

Добавить в конфиг код ниже, затем перечитать конфиг:

# Linux only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi C-WheelUpPane send-keys -X halfpage-up
bind -T copy-mode-vi C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow,
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

https://unix.stackexchange.com/questio....#318285


17.11.2023 14:16
4 harushima
0  
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 -i -sel p -f | xclip -i -sel c "
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle
bind P paste-buffer

В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous

Календарь
«  Июль 2017  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы