|
|||||||
Tmux - основные клавиатурные команды и базовая настройка
Время создания: 11.11.2013 23:59
Автор: Xintrea
Текстовые метки: linux, tmux, терминал, консоль
Раздел: Компьютер - Linux - Bash - Терминал
Запись: xintrea/mytetra_syncro/master/base/13841999905p86ii5dt9/text.html на raw.github.com
|
|||||||
|
|||||||
Tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Эта программа чем-то напоминает screen, только лучше: в первую очередь потому, что использует модель клиент—сервер. Tmux позволяет разделять рабочую область на несколько консолей, менять их размеры и всячески ими управлять. Здесь собраны минимальные сведения о tmux, позволяющая быстро начать его использовать. Тонкую настройку программы, продвинутые команды и бесконечные хот-кеи можно настраивать, ознакомимшись в содержимым команды man tmux. Запуск tmux Очень хороший способ запустить tmux: tmux attach || tmux new Делая так, команда вначале пытаетеся подключиться tmux-консолью к уже существующему серверу tmux, если он существует (tmux attach). Если сервер еще не запущен — запускается сервер и к нему создается консоль (tmux new). Как пользоваться сочетанием Ctrl+b ? Сочетание клавиш Ctrl+b - это основной сочетание, после которого следует клавиша команды. Обычно сложно сразу понять как им пользоваться, и в интернете болтается куча вопросов что не работает сочетание Ctrl+b. Чтобы сочетание работало, нажимать нужно так:
Основные сочетания клавиш В одной сессии может быть сколько угодно окошек:
В одном окошке может быть много панелей:
Недостаток — непривычным становится скроллинг:
Ctrl+b d — отключиться от tmux. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.) Использование мышки По непонятной причине, по-дефолту поддержка мыши в tmux отключена. Но ее можно включить. Для этого надо сделать следующие действия:
set-option -g -q mouse on
source ~/.tmux.conf При таких настройках в tmux можно будет мышкой выбирать нужную панель, и она автоматически будет становиться активной. Так же, если ухватить мышкой границы панелей, можно мышкой менять их размер (перетаскивание границ). Кроме того, выделение мышкой будет работать в пределах данного окна. Правда, как скопировать выделенное мышкой - непонятно. В буфер обмена X ничего не попадает. Пока что решение - выделять мышкой с использованием Shift, вставлять в текстовый редактор и убирать лишнее или копировать нужное через редактирование вертикальными блоками. Чтобы надежно копировать данные, надо научиться выделять текст в терминале клавиатурой. Копирование/вставка клавиатурой Нужно сразу предупредить, что копирование клавиатурой происходит только в специальный буфер обмена tmux. Не в системный буфер обмена, а именно во внутренний буфер обмена tmux. Для копирования/вставки в пределах tmux используются клавиши:
Настройка копирования в системный буфер обмена Однако, tmux можно настроить так, что будет работать копирование и в системный буфер обмена. Если в системе есть утилита xclip, то в файл ~/.tmux.conf надо добавить строку: bind-key -T copy-mode Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard" Если необходимо работать через утилиту xsel, то конфигурирующая строка будет выглядеть так: bind-key -T copy-mode Enter send-keys -X copy-pipe-and-cancel "xsel -i --clipboard" После этой настройки, копирование в общесистемный буфер обмена будет выполняться так же как и при копировании в буфер обмена tmux, только после начала выделения (Ctrl+пробел), когда стрелками выбрана нужная область, надо нажать Enter (например, по Enter завершается выделение в cmd-консоли Windows). Все, после нажатия Enter выделенный фрагмент текста будет находиться в системном буфере обмена рабочего стола. Дублирование ввода (одновременный ввод символов во все панели) Tmux позволяет переключиться в режим, когда набираемая команда будет одновременно печататься во все текущие панели. Для этого надо нажать сочетание клавиш Ctrl+b : (Ctrl+b и двоеточие) для вызова командного режима. Далее надо ввести команду: setw synchronize-panes on Для ускорения ввода команды можно пользоваться автозавершением по кнопке Tab. Если нужно, чтобы синхронизировалась история, например чтобы одинаково работали команды, вызываемые при нажатии клавиш Вверх-Вниз, то можно выполнить команду: clear history То есть, когда работает режим синхронизации панелей, во все панели одновременно посылаются не только символы, а вообще все коды, которые получает консоль, в которой производится ввод. Снятие зависшего процесса в панели Бывает так, что в панели открыт удаленный сеанс SSH, но из-за нестабильной сети или из-за криво работающего удаленного хоста соединение с ним разрывается. Но это не приводит к разрыву сеанса SSH, и в панели интерфейс "зависает". По-хорошему надо этому активному, но зависшему сеансу отправить сигнал завершения. А как это сделать для конкретной панели, если в ней все зависло? Для этого надо сделать еще одну настройку tmux. В файл ~/.tmux.conf надо добавить строку: bind-key k run-shell 'kill -s USR1 -- "-$(ps -o tpgid:1= -p #{pane_pid})"' И после чего перезапустить tmux или перечитать конфигурацию, как было написано выше. В результате такой настройки, если процесс зависнет, то при нажатии Ctrl+b k текущему процессу в текущей панели будет отправлен сигнал SIGUSR1, который является сигналом завершения процесса. При желании можно написать KILL вместо USR1, тогда завершение процесса будет безусловным. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|