В этой статье я приведу вам десять моих любимых советов по tmux
. Для тех, кто не знаком с tmux
, редактор SitePoint Ruby Гленн Гудрич написал отличный обзор основ.
Сегодня я собираюсь показать вам советы и приемы, которые я использую с tmux
на ежедневной основе, а также о том, как tmux
может улучшить рабочий процесс разработки на Ruby. Если вы являетесь пользователем vim
, вас ожидает угощение.
Совет № 1: Всегда включайте сеанс tmux
Попасть в новую привычку — это всегда тяжелая битва. Так же, как пытаясь заставить себя использовать клавиши hjkl
в vim
, отключив клавиши со стрелками, мне нужно было найти способ заставить себя постоянно использовать tmux
. Это полезно, когда вы занимаетесь программированием и забыли, что сначала вы должны использовать tmux
-ed.
Приведенный выше пример работает с iTerm2 на Mac OSX. Не должно быть трудно искать эквиваленты Linux. Основная идея — всегда запускать tmux attach -t base || tmux new -s base
tmux attach -t base || tmux new -s base
при запуске программы терминала.
Строка выше пытается подключиться к ранее созданному сеансу, называемому base
, или создает новый (также называемый base
), если он не существует. Вы можете переименовать base
на что угодно, это не специальное ключевое слово. С этим заклинанием, когда вы запускаете терминал, вы автоматически подключаетесь к предыдущему сеансу tmux
.
Совет № 2: Синхронизация нескольких панелей
Видео выше показывает четыре панели, загруженные REPL на четырех разных языках. Двигаясь по часовой стрелке, у нас есть Haskell, Ruby, Elixir и Python. Что дает нам setw synchronise-panes
, так это то, что он одновременно отправляет ввод с клавиатуры с одной панели на остальные панели. (В этом случае мы также можем увидеть, что Elixir REPL намного лучше из-за цветного вывода.)
Очевидно, что эта демонстрация — просто трюк на вечеринке, чтобы произвести впечатление на разработчиков и не более того. Хорошим вариантом использования является выполнение повторяющейся операции на нескольких машинах. Например, представьте, что у вас есть сеанс tmux
подключенный к четырем удаленным хостам, и необходимо выполнить одну и ту же команду на всех них.
Совет № 3: Обновление tmux
Я склонен к очистке терминала с помощью Command + L
К сожалению, в tmux
это просто портит весь сеанс. Чтобы проиллюстрировать это, выше показан мой типичный опыт работы с tmux
: я с удовольствием программирую, когда каким-то образом мои толстые пальцы нажимают Command+k
и весь мой сеанс tmux
запутывается, сводя меня с ума:
К счастью, легко исправить привязку prefix-r
для перезагрузки файла конфигурации tmux
, и все снова хорошо. В ~/.tmux.conf
добавьте следующую запись:
bind-key r source-file ~/.tmux.conf
Это говорит tmux
снова tmux
конфигурацию, по существу перезагружая tmux
.
Совет № 4: Менеджер плагинов tmux
Это мое недавнее открытие. Я не осознавал, что кто-то создал менеджер плагинов tmux
. Я не буду утомлять вас подробностями установки, поскольку она довольно проста.
После того, как вы установите плагин, достаточно выбрать tmux.conf
плагин и вставить запись в tmux.conf
.
Если вы используете Vundle или Pathogen для vim
, процесс такой же. Вы объявляете любые плагины, которые хотите, предоставляя имя пользователя и tmux.conf
GitHub, сохраняете tmux.conf
, затем tmux.conf
prefix + I
чтобы установить плагин:
Следующие два совета охватывают два интересных плагина, которые можно установить с помощью менеджера плагинов tmux
.
Совет № 5: Воскрешение tmux
tmux-resurrect — это инструмент для сохранения среды tmux
перезапуске системы. Почему это полезно? Когда вы перезапустите tmux
, весь сеанс tmux
. tmux-resurrect
исправляет это. Еще одна очень приятная особенность tmux-resurrect
— возможность восстанавливать сессии vim
!
В следующем видео у меня есть сеанс vim
в левой панели rails console
и rails server
, соответственно, справа.
Чтобы tmux-resurrect
сохранил сеанс vim
, установите vim-obsession Тима Попа . vim-obssesion
облегчает запись сессии vim
. Я не играл с этим много, но позвольте мне показать вам весь процесс:
Прежде всего, мы должны сказать vim-obsession
чтобы отслеживать сессию. У меня также htop
работает в другом окне.
Чтобы сохранить весь сеанс tmux
, введите prefix + Control + s
. Затем, если что-то убивает сервер tmux
, что происходит, когда батарея разряжается или кто-то спотыкается о провод, и питание отключается. С tmux-resurrect
потеря сеанса tmux
не является проблемой. Чтобы восстановить сеанс, вам нужно снова запустить tmux
, и на этот раз нажать prefix + Control + r
.
Тем не менее, я уже здесь, некоторые люди думают: «Разве prefix + Control + s + r
вручную не доставляет хлопот! У кого есть время, чтобы запомнить все это? »Введите совет № 6.
Совет № 6: tmux-continuum
tmux-континуум постоянно сохраняет вашу среду tmux
через равные промежутки времени и автоматически восстанавливает ее при запуске tmux
.
Совет № 7: Масштабирование tmux
Zoom был представлен в tmux
1.8. Масштабирование tmux
очень полезно, когда вы хотите посмотреть на ошибки теста или проверить журналы. Чтобы увеличить масштаб панели, нажмите prefix + z
и используйте ту же комбинацию для уменьшения.
Совет № 8: плавно перемещайтесь между vim
и tmux
Иногда бывает сложно понять, находитесь ли вы в разделении vim
или на панели tmux
. Навигация между обоими также является проблемой. Так продолжалось до тех пор, пока не появился vim-tmux-navigator .
Здесь у нас есть сеанс tmux
с тремя панелями. Левая половина состоит из двух разделений vim
, а правая часть содержит две панели tmux
.
С помощью vim-tmux-navigator
я могу перемещаться по hjkl
vim
и панелям tmux
используя Control
+ hjkl
:
Совет № 9: vim
+ tmux
+ Ruby Specs
vim
и tmux
создают tmux
комбинацию для запуска тестов Ruby. Чтобы это работало, вам нужно установить три плагина vim
:
Как только вы установите эти плагины, давайте посмотрим, как они улучшают наш рабочий процесс:
У нас есть спецификации для модели Micropost
. Я настроил to runs all the specs found in this file. However, when I hit
to runs all the specs found in this file. However, when I hit
, it runs only the specs under the cursor. Extremely handy!
, it runs only the specs under the cursor. Extremely handy!
Совет № 10: tmuxinator
В дополнение к удивительному имени, tmuxinator является отличным гемом Ruby, который помогает вам легко создавать сессии tmux
. tmuxinator
особенно полезен, когда у вас есть разные проекты, требующие разных макетов панелей / окон.
Спасибо за прочтение!
Надеюсь, вам понравилась эта статья, и вы узнали что-то новое. Есть ли у вас другие советы, чтобы поделиться? Распространите немного любви tmux
в комментариях ниже!