Статьи

Tmux: простой старт

Узнайте больше о ruby ​​с нашим руководством Настройка автоматического тестирования с RSpec на SitePoint.

Несколько раз в год я нахожу что-то, что трансформирует или улучшает мою среду разработки. Примеры за последние несколько лет: Github , vim и zsh (точнее, on-my-zsh .)

Примерно в прошлом году я начал использовать другой трансформер разработки: Tmux . Что такое Tmux? По данным его сайта:

tmux — это терминальный мультиплексор. Что такое терминальный мультиплексор? Это позволяет легко переключаться между несколькими программами в одном терминале, отсоединять их (они продолжают работать в фоновом режиме) и подключать их к другому терминалу. И сделать намного больше.

Впервые я узнал о tmux от Эвана Лайт ( @elight ), когда нанял его на пару программ назад. Я был ошеломлен тем, как легко tmux сделал так, что Эван и я могли сотрудничать в режиме реального времени. Моя реакция была немного похожа на незамерзшего пещерного человека. Я восхищался этой технологией, предполагая, что только продвинутые существа, такие как Эван, могут обладать такой силой. Я положил его в свой список «Когда-нибудь» и вернулся к моим каменным табличкам.

По всей вероятности, вы, наверное, уже слышали о tmux. Тем не менее, вы не можете использовать его каждый день. Если tmux находится в вашем списке «Когда-нибудь», потому что вы думаете, что он слишком сложный (я имею в виду, давай, слово «мультиплексор» просто страшно), то я здесь, чтобы показать вам, насколько просто поместить tmux в ваш рабочий процесс.

Простая установка

Для начала вам понадобится tmux (DERP). В зависимости от вашей платформы, существуют различные (простые) способы установки:

Mac OS X

Используйте Homebrew . brew install tmux

Ubuntu / Debian

Существует пакет Ubuntu, поэтому sudo apt-get install tmux Чтобы получить 1.8, сделайте следующее (благодаря этой статье ):

 $ sudo add-apt-repository ppa:pi-rho/dev
$ sudo apt-get update
$ sudo apt-get install tmux

Это не так уж важно, если вы не можете получить 1,8 или не хотите добавлять PPA. Вы просто упустите одну из интересных функций, добавленных в 1.8, о которых я расскажу позже.

Windows

Ничего страшного, если вы не используете Cygwin или не устанавливаете виртуальную машину с дистрибутивом * nix, а затем выполняете инструкции для Ubuntu.

Введите следующее, чтобы убедиться, что все в порядке.

 $ tmux -V
tmux 1.8

Ура! tmux установлен!

Простое использование

Использовать tmux так же просто, как набирать tmux Когда вы это делаете, это выглядит так, как будто ваш экран очищается, и вы возвращаетесь к тому же терминалу. Может быть, немного анти-климат, но вы только что прошли через зеркало.

tmux2

Более наблюдательный из вас заметит, что терминал имеет зеленую полосу вдоль дна.

tmux2 2

Если вы думаете, что это строка состояния для tmux, вы были бы правы. Прямо сейчас он сообщает мне дату, время, хост, какие «окна» открыты (только 1 с именем «0: bash») и название сеанса («0»).

Когда вы запускаете tmux без аргументов, он именует сеанс, используя нулевой список, который увеличивается на единицу для каждого текущего сеанса tmux. Как вы уже догадались, вы можете называть свои сессии как угодно, но мы не будем вдаваться в подробности сегодня.

Строка состояния также может быть настроена для отображения дополнительной информации, использования разных цветов и многих (МНОГО) других вещей. Однако в этой статье мы сосредоточимся только на окнах и панелях.

Нет панели, нет усиления

Я уже упоминал такие слова, как «сессия», «окно» и «панель». Когда вы запускаете tmux, он создает новый сеанс tmux. Проще говоря, сессия tmux и контейнер для окон и панелей. Окно содержит одну или несколько панелей.

tmux_digram

Каждая панель и каждое окно являются виртуальным терминалом, просто случается, что окна могут содержать панели. Панели и окна также могут поменяться местами, поэтому панель можно сделать окном, а окно — панелью.

Когда вы начинаете жизнь с tmux, я бы порекомендовал вам разделить ваш терминал на 1-3 панели для окна «edit» и запустить другие процессы (например, консоль rails или файл журнала) в их собственных окнах. Это то, что мы будем ходить сегодня.

Windows в ваше приложение

Давай сделаем это. Запустите терминал и cd Я использую приложение Rails здесь, но это не важно.

Теперь введите tmux

Это первое окно, которое будет окном «редактирования» для нашей сессии. Я хочу увидеть редактора, мои тесты и то, что top(1) Разбейте текущее окно на две панели, набрав:

 CTRL+B %

Вау! Эта комбинация клавиш немного загадочна, нет? Это так, но это нормально. Изучение команд tmux ничем не отличается от изучения чего-либо еще, и их можно легко изменить.

Однако стоит отметить, что часть этого макроса CTRL+B CTRL+B

Ваш терминал должен выглядеть следующим образом:

tmux_split1

Теперь мы хотим разделить правую панель на 2 панели, расположенные вертикально. Ваш курсор должен быть в правой части окна. Тип:

 CTRL+B "

и ваш терминал должен выглядеть так:

tmux_split2

При настройке панелей необходимо запускать команды для каждой панели. Поскольку ваш курсор теперь находится в нижней части правой панели, введите top ОК, переключитесь на верхнюю правую панель и введите команду. Для меня я буду использовать rake testзащиты или чего-то подобного.

Однако прежде чем вы сможете это сделать, вам нужно знать, как переключать панели, не так ли? Чтобы перейти от нижней правой панели к верхней правой панели:

 CTRL+B <UP ARROW>

Тот же префикс, новый суффикс к команде. Это имеет немного больше смысла; чтобы двигаться вверх, используйте стрелку вверх. Теперь введите команду, чтобы запустить ваши тесты.

Можете ли вы выяснить, как перейти на левую панель? Как только вы это сделаете, запустите ваш редактор. Я использую VIM, поэтому я vim

Вот моя панель редактирования:

tmux_edit_pane

ОК, панель редактирования готова. Совет для профессионалов : если вы используете tmux 1.8, вы можете переключить текущую панель в полноэкранный режим, набрав:

 CTRL+B  z

Я LUUUUUV эту функцию, потому что это означает, что я могу в полноэкранном режиме мои тесты, когда они терпят неудачу и легче перемещаться по этой панели, а затем вернуть его к исходному размеру, когда закончите.

Теперь я покажу вам, как добавить окно, чтобы вы могли запускать другие сервисы, связанные с вашим приложением, в сеансе tmux. Чтобы добавить новое окно:

 CTRL+B c

Теперь вы находитесь в терминале без панели (HA!), И в строке состояния отображаются два окна (0 и 1). Запустите консоль рельсов или все, что вам нравится здесь.

tmux_new_window

Добавьте столько окон, сколько хотите, используя ту же комбинацию клавиш. Если вы хотите переключиться между окнами 0 и 1, введите:

 CTRL+B <window number>

где 0 или 1.

Теперь вы можете прыгать туда-сюда с согласия вашего сердца.

Конец близок

Последнее, что я упомяну, это как вы отсоединяетесь и заканчиваете сеанс. Когда вы находитесь в сеансе, вы «привязаны» к нему. Команда tmux Чтобы отсоединить, введите:

 CTRL+B d

Вы увидите что-то вроде [detached] Если вы tmux ls

tmux_ls

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

 tmux attach -t 0

где -t0 Теперь идите и отсоединитесь снова.

Чтобы завершить / убить сеанс, введите

 tmux kill-session -t 0

Это завершит сеанс, поэтому, если вы выполните еще один tmux ls Кстати, если вы exit

Следующие шаги

Эта статья лишь показывает, что tmux может сделать для вас. Тем не менее, вы можете применить то, что вы узнали сегодня, и быть более продуктивным в своей среде разработки, не тратя ни секунды на изучение tmux.

Но вы не такой человек, не так ли? Как только вы освоитесь с тем, что вы узнали здесь, я рекомендую вам сделать следующее:

  • Купите книгу Tmux и прочитайте ее. Здорово.
  • Создайте свой файл .tmux.conf и начните изменять tmux в соответствии со своими потребностями. Есть НАГРУЗКИ примеров, и это делает tmux еще лучше.
  • Проверьте tmuxinator для настройки именованных сред tmux, которые запускают множество панелей и окон в новом сеансе с помощью простой команды.
  • Соедините программу с кем-то, кто использует tmux как способ совместной работы в режиме реального времени. Это сногсшибательно.

Заворачивать

Цель этой статьи состояла в том, чтобы заставить вас работать с tmux как можно более простым способом. Я сейчас нахожусь в точке, где я начинаю tmux, чтобы делать практически все. Мне нравится удобство разбиения окна на панели и выполнения быстрой команды, не выходя из текущего окна. Я думаю, вы найдете это столь же полезным.

Узнайте больше о ruby ​​с нашим учебником Настройка автоматического тестирования с помощью RSpec на SitePoint.