В этой статье я приведу вам десять моих любимых советов по 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 в комментариях ниже!
