Как закрыть окно в tmux?

214

Как закрыть окно в tmux? Как Ctrlakярлык на экране с Ctrlaпрефиксом.

Дмитрий
источник
2
Зачем ты гуглил? Если я ищу название вашего вопроса, это самый популярный. Имеет полезный список горячих клавиш (включая тот, который указан cnicutar ниже)
Джефф
29
Ну, теперь этот вопрос сам по себе является главным хитом в Google ...
Jottr

Ответы:

43

Ответ Кента полностью ответил на ваш вопрос, однако, если вы хотите изменить конфигурацию tmux на аналогичную GNU Screen, вот tmux.conf, который я использовал для этого:

# Prefix key
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# Keys
bind k confirm kill-window
bind K confirm kill-server
bind % split-window -h
bind : split-window -v
bind < resize-pane -L 1
bind > resize-pane -R 1
bind - resize-pane -D 1
bind + resize-pane -U 1
bind . command-prompt
bind a last-window
bind space command-prompt -p index "select-window"
bind r source-file ~/.tmux.conf

# Options
set -g bell-action none
set -g set-titles on
set -g set-titles-string "tmux (#I:#W)"
set -g base-index 1
set -g status-left ""
set -g status-left-attr bold
set -g status-right "tmux"
set -g pane-active-border-bg black
set -g pane-active-border-fg black
set -g default-terminal "screen-256color"

# Window options
setw -g monitor-activity off
setw -g automatic-rename off

# Colors
setw -g window-status-current-fg colour191
set -g status-bg default
set -g status-fg white
set -g message-bg default
set -g message-fg colour191
Джимми Зелинские
источник
Это слишком многословно и не указывает, где ответ на вопрос
Родоргас
313

попробуй Prefix+&

если у вас есть

bind q killp

в вашем .tmux.conf, вы также можете нажать Prefix+, qчтобы убить окно, только если в этом окне только одна панель.

по умолчанию префикс выше Ctrl + b, поэтому для закрытия окна по умолчанию вы можете использовать Ctrl +b &

Кент
источник
5
Это прекрасно работает: Ctrl+b &обратите внимание, что вы должны подтвердить, yчтобы действительно убить текущее окно, включая все панели в этом окне. Вы окажетесь внутри окна, которое вы использовали последним до этого.
rubo77
1
Стоит отметить, что по умолчанию Prefix+ qпоказывает номер панели, поэтому назначение killpэтой комбинации переопределит этот ярлык.
КМО
106

<Prefix> & за убийство окна

<Prefix> x за убийство панели

Если есть только одна панель (т.е. окно не разбито на несколько панелей, <Prefix> xокно будет уничтожено)

Как всегда повторяется, <Prefix>как правило CTRL+b. (Я думаю, что для начинающих, мы можем просто говорить CTRL+bвсе время, и не говорить о префиксе вообще, но в любом случае :))

Руши Агравал
источник
Я не мог убить только панель с помощью <prefix> x, только с помощью <prefix>:, затем набрал текст respawn-pane -k.
Пабло А
87

В общем-то:

tmux kill-window -t window-number

Например, если вы находитесь в окне 1 и хотите убить окно 9:

tmux kill-window -t 9
Gary
источник
2
Это. (Кстати, большое спасибо!) Если это делается удаленно, когда tmux работает в каком-то другом терминале, можно сделать INFO=$(tmux new-window -P notepad)следующее tmux kill-window -t $INFO.
Иоганн
70

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

  1. ctrl+b q показать номера панелей.
  2. ctrl+b x убить панель.

Убийство последней панели убьет окно.

Николай Фоминых
источник
2
Это лучшее решение, когда вы только что завершили процесс в окне tmux.
Филипп Киркбрайд
1
Killing last pane will kill window, У меня не работает? Я использую макинтош
Энди Альдо
да, я думаю, что это лучшее решение, которое когда-либо существовало.
Исчисление
33

Если вы просто хотите сделать это один раз, без добавления ярлыка, вы всегда можете набрать

<prefix> 
:
kill-window
<enter>
gatoatigrado
источник
10

Пока ты спрашивал как убить окно соотв. панель , я часто не хотел бы ее убивать, а просто возвращал ее в рабочее состояние (для меня важно расположение панелей, уничтожение панели уничтожает ее, поэтому я должен воссоздать ее); tmux предоставляет respawnкоманды для этого: respawn-paneсоотв. respawn-window, Просто люди вроде меня могут найти это решение здесь.

Том Регнер
источник
9

Множество разных способов сделать это, но мой любимый просто набрать 'exit' в командной строке bash.

SMP
источник
3
Это предполагает, что bash работает в окне. Окно, которое я хотел убить и которое привело меня на эту страницу, представляет собой список команд tmux, у которых нет оболочки для выхода.
Майкл Кэмпбелл
1
Если вы просматривали список команд, отображаемых с помощью <prefix> +?, Вы можете оставить его, нажав q или <RET>.
Скотт Чентони
8

ctrl + d убивает окно в терминале linux, также работает в tmux.

Это своего рода подход.

pingsoli
источник
2
Обратите внимание, что этот ярлык означает «конец данных». Это работает только в том случае, если текущий запущенный процесс в панели tmux принимает этот сигнал и завершает себя при его получении (например, как это делает bash). Поскольку в панели нет процессов, они закрываются tmux. Работает не во всех случаях.
Ньи
это Ват, который я искал.
thedanotto
1
Это нормально, если в окне есть запущенная оболочка, но если есть просто замороженное приложение, нужно что-то более жестокое. Ответ Николая Фоминых работает отлично.
oz1cz
Это только убивает панель, а не окно.
StevieD
1

По умолчанию
<Prefix>& для уничтожения окна
<Prefix>x для уничтожения панели
И вы можете добавить информацию о конфигурации

vi ~/.tmux.conf
bind-key X kill-session

тогда
<Prefix>X за убийство сеанса

DinoStray
источник