Так что я большой поклонник мультиплексоров, таких как GNU Screen и Tmux , но даже пользуясь Screen в течение многих лет, я все еще осознаю, что есть много вещей, которые я не знаю (и я использую Tmux только пару месяцев, так что это хуже ).
Какие конфиги, советы и хитрости вы используете в этом программном обеспечении (оба или на каждом, не имеет значения)?
Я использую это в качестве конфигурации экрана (я думаю, что я адаптировал это из настроек Ubuntu по умолчанию screenrc
):
shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'
Это простая конфигурация, чтобы строка состояния отображалась в нескольких цветах, но я уверен, что есть еще кое-что, что я могу сделать с screen и Tmux, и хотел бы узнать это.
gnu-screen
tmux
CoreDump
источник
источник
zombie qr
держит окно открытым, даже если процесс не работает, и позволяетq
закрыть его илиr
воскресить. Полезно для проверки программного обеспечения.Ответы:
Это может быть немного просто для этой толпы, но я нашел полезным добавить это в конец .profile, чтобы при удаленном входе в систему через ssh я мог прочитать MOTD, а затем переключиться на экран.
источник
У меня есть это в моем .bashrc. Если вы не работаете с экраном, эта функция вызывается
ssh
как обычно, когда выполняется. Если вы работаете внутри экрана (и вы не изменили значение по умолчанию$TERM
), он сначала устанавливает имя окна для удаленного хоста (вместе с любыми необязательными параметрами). Очень удобно отслеживать удаленные соединения, когда у вас много открытых, что, как мне кажется, является частым явлением в нашей работе.Я также использую
bind ^A windowlist -b
для быстрого доступа к списку окон (просто дважды нажмите Ctrl-A).Простая поддержка ssh-agent для всех окон:
Затем в любом окне вы делаете ssh-add только один раз, когда начинаете новый сеанс.
Наконец, при подключении к сеансу удаленного экрана из другого сеанса экрана можно использовать
screen -x -e ^Vv
для установки последовательности управления значение CTRL-V (например). Это позволяет избежать необходимости цепочки CTRL-As для управления удаленным сеансом.источник
Вы могли бы рассмотреть Byobu , который по сути представляет собой набор из сотен советов, приемов, конфигураций, комбинаций клавиш, сценариев состояния и лучших практик, ориентированных на
screen
иtmux
.источник
Несмотря на то, что я начал использовать tmux для панелей, я все еще использую экран для мультиплексирования окон внутри. Предположительно, tmux обладает такой функциональностью, но переключение панелей из одного окна в другое не является для меня интуитивно понятным, и два подключенных средства просмотра tmux не могут просматривать разные окна в рамках одного и того же демона (поведение screen -x), таким образом, решение screen-in-tmux. Это две привязки tmux.conf, на которые у меня ушло больше всего времени, и я использую их каждый день.
Первый, bind M (ctrl-b shift-M), переключает tmux между средством выбора панели мыши и выделением / копированием мыши. Вы все еще можете копировать / вставлять в режиме выбора панели, но вы должны удерживать клавишу shift (и если вы привыкли к этому, копирование / вставка в любом другом приложении сделает вас немного несчастным, позвольте мне сказать вам). Макрос также делает визуально очевидным, какой режим выбран в данный момент.
Второй, bind CL (ctrl-b ctrl-l), возьмет любой макет из 4 панелей и превратит его в мой предпочтительный макет. Часто я обнаруживаю, что нажал ctrl-d на панели, которая, как мне казалось, находилась внутри экрана, чтобы закрыть его, но вместо этого не было сеанса экрана, и он закрывал панель. Так как мой макет v-split, h-split, v-split и некоторое изменение размера, если я случайно закрыл любое, кроме последнего окна, становится болью (без каламбура) закрывать любые промежуточные панели между тем, которое мне нужно воссоздать и последнее, затем заново создайте и измените размеры панелей и, наконец, заново присоедините все сеансы экрана, которые мне, возможно, пришлось отсоединить при уничтожении панелей. С помощью этого макроса я могу создать новую панель ctrl-b {(связывание по умолчанию для swap-pane -U), пока она не вернется в правильном порядке, затем нажать макрос и все вернется в нормальное состояние. Мой предпочтительный макет вряд ли совпадает с вашим,
list-windows
Команда, чтобы получить строку макета, как показано ниже.Если это слишком наивно для вашего вкуса, всегда есть tmuxinator для управления панелями.
источник