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

Категории раздела
Куклы и игрушки [60]
Личное [114]
Музыка [19]
Общее [300]
Японский язык [12]
ZX Spectrum [69]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [124]
Ubuntu [103]
Manjaro Linux [36]
Python [3]
Магнитольное [43]
Commodore64 [6]
Игровые приставки [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)


Командная строка


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  



Внутренняя ком.строка по ctrl-b и двоеточию (:)

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


Горячие клавиши

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


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

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


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



КОНФИГ ~/.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/

Видео урок:


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

05.01.2021 05:18
1 harushima
0  
Создать сессию name из стартовой папки ~
tmux new-session -c ~ /help -s name

EУдалить сессии:
tmux kill-server

Создать новый tmux сессии в сессии tmux
https://coderoad.ru/16398850


05.01.2021 05:25
2 harushima
0  
полезная шпаргалка по комстроке
https://losst.ru/shpargalka-po-tmux


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


12.09.2021 03:53
4 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

В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: 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-2023
Лучший браузер!
Блокировка рекламы