Краткая шпаргалка по tmux (менеджеру терминалов)

    tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

    image

    Вашему вниманию предлагается минималистическая шпаргалка, позволяющая быстро начать использовать tmux, а уж тонкую настройку, продвинутые команды и бесконечные хот-кеи желающие найдут, набрав man tmux.



    Очень хороший способ запустить tmux:
    tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.

    После этого вы попадаете в полноценную консоль.
    Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)

    В одной сессии может быть сколько угодно окошек:
    Ctrl+b c — создать окошко;
    Ctrl+b 0...9 — перейти в такое-то окошко;
    Ctrl+b p — перейти в предыдущее окошко;
    Ctrl+b n — перейти в следующее окошко;
    Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);
    Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).

    В одном окошке может быть много панелей:
    Ctrl+b % — разделить текущую панель на две, по вертикали;
    Ctrl+b " — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);
    Ctrl+b →←↑↓ — переходить между панелями;
    Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).

    Недостаток — непривычным становится скроллинг:
    Ctrl+b PgUp — вход в «режим копирования», после чего:
    PgUp, PgDown — скроллинг;
    q — выход из «режима копирования».
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 50
      0
      Мышь поддерживает? Например, меню в mc можно выбрать кликом мыши. В screen это не работает. Что насчёт tmux?
        0
        Увы, как и screen, — нет.
          0
          В screen как раз работает. А вообще tmux с ncurses приложенниями работает паршиво.
            0
            В screen не работает. Во всяком случае если mc собран с S-Lang, насчет ncurses не в курсе.
              +2
              export TERM=xterm
              и всё в шоколаде…
                0
                панель меню тогда поганится в mc. наполовину черная становится и некоторый пункты черным по черному написаны.
                  0
                  ах да. тема не стандартная и на 256 цветов.
                    +6
                    дык
                    export TERM=xterm-256color
            0
            Частично поддерживает. Например опция mouse-select-pane позволяет панели мышкой переключать.
            Есть ещё mode-mouse, но я не пользуюсь.
              +1
              Скажем так, он умеет событие «щелчок мыши» обрабатывать, но передавать его в терминал — не умеет.
              0
              ¿а это что значит:
              """- tmux has a multiple paste buffers. Not a major one but comes in handy quite a lot."""
              0
              В виме у меня мышь работает по крайней мере.
                +2
                Итак поковырялся с mc… вобщем тут такое дело… просто назначение переменной
                export TERM=xterm-256color не поможет обрести поддержку мыши в mc.

                (25.08.2011) andrew_b: Если при старте Gpm_Open() возвращает (-1), то enable_mouse = FALSE.
                (25.08.2011) andrew_b: В скрине и тмуксе это так и есть.
                (25.08.2011) andrew_b: Поэтому мышь не обрабатывается.
                (25.08.2011) andrew_b: Её как бы нет.
                


                после этого я проверил как оно себя ведёт в случае если не проверять Gpm_Open…

                вобщем если enable_mouse переделать вот так

                void
                enable_mouse (void)
                {
                    if (mouse_enabled)
                        return;
                        
                    /* save old highlight mouse tracking */
                    printf (ESC_STR "[?1001s");
                
                    /* enable mouse tracking */
                    printf (ESC_STR "[?1000h");
                
                    fflush (stdout);
                    mouse_enabled = TRUE;
                
                }
                


                то поддержка мыши будет… но надо еще
                export TERM=xterm-256color

                на эту тему есть тикет www.midnight-commander.org/ticket/2479
                как быстро появится правильный патч и войдет в апстрим не скажу, надо с проблемой ковыряться еще… и более тщательно…
                  +1
                  Я у себя решил проблему следующим образом (теперь пребываю в нирване)
                  1) декомилил терминфо от screen: infocmp -aI screen
                  2) во второй строчке поменял имя терминала с screen на rxvt-tmux
                  3) скомпилил через tic -a
                  4) TERM установил в rxvt-tmux

                  пункты 1...3 можно заменить на

                  ln -s /lib/terminfo/s/screen /lib/terminfo/r/rxvt-tmux

                  что начало работать (из-под putty):
                  1) Мышка
                  2) стрелки\курсор\функциональные\home-end
                  3) BCE! — Background Color Erase… теперь бекграунд нормальный… разница как бы чувствуется:
                  image
                  4) home-end работают в nano
                  5) цвет.

                  Внезпано, это работает только если вначале rxvt… У курсей и rxvt какая-то особенная любовь.
                +4
                В чем его отличие, или какие преимущества по сравнению со screen?
                  +1
                  С этого начинается их FAQ.
                  Там много. Окошки можно привязывать к нескольким сессиям, перекидывать их между сессиями; всякие улучшения интерфейса, те же панельки. Конфигурироемость на любой вкус.
                    +3
                    Вменяемый конфигурационный файл в отличии от скрина.
                      +1
                      Для меня основное практическое отличие это то что по умолчанию при совместном подключении сессия общая, т.е. окна переключаются совместно у всех. до tmux мы пользовали скрин для пэиринга по ssh/skype и одной из самых частых фраз была: «а ты в каком окне сейчас колбасишь?» ;)
                      +1
                      А кириллица, кириллица… В Mac OS X Lion с ней все паршиво :(
                        –3
                        А еще есть byobu(клон скрина), мне для управления домашним сервером хватает вполне и красивости есть по сравнению со скрином.
                          +1
                          Распространенное заблуждение. Из мануала:
                          byobu — wrapper script for seeding a user's byobu configuration and launching screen
                            –4
                            это кстати лучший повод минусануть… От того что это скрипт, менее интересным он не становится. Наверняка есть люди кто не знал. Но ведь истина важнее да?
                          +1
                          Этого, кстати, достаточно для повседневного использования. Спасибо.
                          Использую на ПК, на котором программирую, вместо WM. Иксы не нужны, это очевидный плюс. Удобный этот tmux.
                            +3
                            Недавно добавил следующее в .bashrc на сервере:
                            if [ $TERM != "screen" ]; then
                              ( (tmux has-session -t remote && tmux attach-session -t remote) || (tmux new-session -s remote) ) && exit 0
                              echo "tmux failed to start"
                            fi
                            Доволен как слон.
                              0
                              Подскажите новичку что означает сей код?
                                0
                                Если сессия запущена не через Screen, то запускаем tmux и выходим. Если по какой то причине не вышли, то выведется надпись «неполучилось».
                              +1
                              А еще можно организовать удаленное парное программирование. Для этого достаточно обоим подключится к одной и той же сессии tmux с запущенным vim, ну и voip для общения.
                                +1
                                в eclipse это можно делать через jabber. К сожалению не нашел пруф. На видео этого плагина показывали как программисты общаются и правят один и тот же файл в реалтайме, но будучи тогда школотой, не смог настроить это дело.
                                  0
                                  А ещё есть gobby.
                                  +1
                                  мне screen не нравится только одним, он не меняет DISPLAY при подключении с разных компутеров. если запустил screen локально, а потом к этой сессии подцепляешься удаленно, то иксовые приложения не находят правильный Х-сервер. в tmux
                                  есть поддержка скриптов, по идее настройка должна быть возможна. кто-нить сталкивался?
                                    0
                                    >а потом к этой сессии подцепляешься удаленно, то иксовые приложения не находят правильный Х-сервер. в tmux

                                    конечно. переменные окружения внутри процесса не меняется от того, кто смотрит на его вывод.
                                      0
                                      это я понимаю. я понимаю почему оно не работает, я понимаю как это можно исправить (задать «правильный» DISPLAY для вновь созданного окна), но в screen такой возможности не нашел. и я спрашивал про подобную ситуацию в tmux.

                                      а так-то конечно спасибо, что поделились своими знаниями.
                                        +1
                                        >я понимаю как это можно исправить (задать «правильный» DISPLAY для вновь созданного окна), но в screen такой возможности не нашел

                                        как адский костыльрешение срадствами скриптов — при создании нового окна, а наверное даже процесса оболочки, можно попробовать залезть в /proc/$(pidof screen)/environ и вытащить оттуда.
                                    +1
                                    tmux мощный оконный менеджер, намного мощнее screen.
                                    Но одну вещь я так и не смог в нем настроить. Дело в том, что большую массу времени я провожу в vim, в котором мне нужна клавиша Tab, на которую забиндено много полезных действий, таких как навигация по табам, автодополнение сниппетов и прочее. Если при нажатии на Tab происходит перемещение фокуса вперёд, то при Shift-Tab — перемещение назад. Но tmux, т к запущен над vim-ом, перехватывает нажатие Shift-Tab.
                                    Если кто-то сталкивался с такой проблемой, поделитесь кусочком .tmux.conf
                                      0
                                      Мне кажется, что комбинация ctrl-a намного удобнее чем ctrl-b.
                                        +5
                                        unbind C-b
                                        set -g prefix C-a
                                          +1
                                          только если нет привычки к emacs-keys в шелле
                                          0
                                          У меня подвисает сессия tmux при вводе любой команды в консоли. Правда у меня FreeBSD
                                          [00:21]domen@server:~ $ uname -r
                                          6.2-RELEASE-p11

                                            0
                                            Подскажите пожалуйста, возможно кто либо сталкивался, есть ли возможность перенести панель из одного окна в другое и поменять панели местами в одном окне. Мануал читал.
                                              +1
                                              Поменять панели местами в одном окне — Cntrl+B Cntrl+o.
                                              0
                                              а вот чем лично для меня удобнее screen, это то, что
                                              Ctrl-A удобнее нажимать одной левой рукой, нежели Ctrl-B
                                              0
                                              а как у него с буферизацией вывода?
                                              в screen вот stderr иногда залипает.
                                                +1
                                                Если кому либо надо немного более чем шпаргала, то подробнее довольно давно описывал в своём блоге.
                                                  +1
                                                  Кстати, еще полезная штука:
                                                  Ctrl+b Ctrl+(→|←|↑|↓) — изменение размеров панели
                                                    +1
                                                    Ctrl+b Alt+[1-5] — выравнивание панелей по-всякому. Мне очень помогло.
                                                    0
                                                    Странно, у меня изменять размеры панели: Ctrl+b Alt+(→|←|↑|↓)
                                                      +1
                                                      Ctrl+b Ctrl+(→|←|↑|↓) от Ctrl+b Alt+(→|←|↑|↓) отличается тем, что первый при шаге меняет размер на одну ячейку, а второй — сразу на пять.

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

                                                    Самое читаемое