Краткая шпаргалка по 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 — выход из «режима копирования».
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 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+(→|←|↑|↓) отличается тем, что первый при шаге меняет размер на одну ячейку, а второй — сразу на пять.

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