Bagaimana cara menghentikan jendela di tmux?

214

Bagaimana cara menghentikan jendela di tmux? Seperti Ctrlakpintasan di layar dengan Ctrlamenjadi awalan.

Dmitry
sumber
2
Untuk apa Google? Jika saya mencari judul pertanyaan Anda, ini adalah hit teratas. Memiliki daftar cara pintas yang berguna (termasuk yang diidentifikasi oleh cnicutar di bawah ini)
Geoff
29
Nah, sekarang pertanyaan ini sendiri adalah hit teratas di google ...
jottr

Jawaban:

43

Tanggapan Kent sepenuhnya menjawab pertanyaan Anda, namun jika Anda ingin mengubah konfigurasi tmux agar mirip dengan Layar GNU, inilah tmux.conf yang telah saya gunakan untuk menyelesaikan ini:

# 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
Jimmy Zelinskie
sumber
Ini terlalu bertele-tele dan tidak menunjukkan di mana pertanyaan dijawab
rodorgas
313

mencoba Prefix +&

jika Anda memiliki

bind q killp

di Anda .tmux.conf, Anda dapat menekan Prefix+q untuk mematikan jendela juga, hanya jika hanya ada satu panel di jendela itu.

default Awalan di atas adalah Ctrl + b, jadi untuk mengakhiri jendela secara default Anda dapat menggunakan Ctrl +b &

Kent
sumber
5
Ini berfungsi dengan baik :, Ctrl+b &perhatikan, bahwa Anda harus mengkonfirmasi dengan ybenar-benar membunuh jendela saat ini termasuk semua panel di jendela itu. Anda akan ditempatkan di dalam jendela yang Anda gunakan sebelumnya sebelum itu.
rubo77
1
Perlu dicatat bahwa secara default Prefix+ qmenampilkan nomor panel, jadi menetapkan killpkombinasi ini akan menggantikan pintasan ini.
kmo
106

<Prefix> & untuk membunuh jendela

<Prefix> x untuk membunuh sebuah panel

Jika hanya ada satu panel (yaitu jendela tidak dibagi menjadi beberapa panel, <Prefix> x akan mematikan jendela)

Seperti yang selalu diulang, <Prefix>umumnya CTRL+b. (Saya pikir untuk pertanyaan pemula, kita hanya bisa mengatakan CTRL+bsepanjang waktu, dan tidak berbicara tentang awalan sama sekali, tapi toh :))

Rushi Agrawal
sumber
Saya tidak bisa membunuh hanya panel dengan <prefix> x, hanya dengan <prefix>:, lalu mengetik respawn-pane -k.
Pablo A
87

Umumnya:

tmux kill-window -t window-number

Jadi misalnya, jika Anda berada di jendela 1 dan Anda ingin membunuh jendela 9:

tmux kill-window -t 9
Gary
sumber
2
Ini. (Ngomong-ngomong, terima kasih banyak!) Jika dilakukan secara jarak jauh di mana tmux berjalan di beberapa terminal lain, seseorang dapat melakukannya INFO=$(tmux new-window -P notepad)dengan diikuti tmux kill-window -t $INFO.
Johann
70

Bagi saya solusinya terlihat seperti:

  1. ctrl+b q untuk menampilkan nomor panel.
  2. ctrl+b x untuk membunuh panel.

Membunuh jendela terakhir akan membunuh jendela.

Nikolay Fominyh
sumber
2
Ini adalah solusi terbaik ketika Anda baru saja menyelesaikan proses di dalam jendela tmux.
Philip Kirkbride
1
Killing last pane will kill window. Tidak bekerja untuk saya? Saya menggunakan mac
Andy Aldo
ya, saya pikir ini adalah solusi terbaik yang pernah ada.
Kalkulus
33

Jika Anda hanya ingin melakukannya sekali, tanpa menambahkan pintasan, Anda selalu bisa mengetik

<prefix> 
:
kill-window
<enter>
gatoatigrado
sumber
10

Sementara Anda bertanya bagaimana cara membunuh window resp. panel , saya sering tidak ingin membunuhnya tetapi hanya untuk mengembalikannya ke kondisi kerja (tata letak panel penting bagi saya, membunuh panel menghancurkannya jadi saya harus membuatnya kembali); tmux menyediakan respawnperintah untuk efek itu: respawn-paneresp. respawn-window. Hanya saja orang-orang seperti saya dapat menemukan solusi ini di sini.

Tom Regner
sumber
9

Banyak cara yang berbeda untuk melakukan ini, tetapi favorit saya hanya mengetik 'keluar' pada bash prompt.

smp
sumber
3
Ini mengira bash sedang berjalan di jendela. Jendela yang ingin saya bunuh yang mengarahkan saya ke halaman ini adalah daftar perintah tmux - yang tidak memiliki shell untuk keluar.
Michael Campbell
1
Jika Anda melihat daftar perintah yang ditampilkan oleh <prefix> + ?, Anda dapat meninggalkannya dengan menekan q atau <RET>.
Scott Centoni
8

ctrl + d membunuh jendela di terminal linux, juga berfungsi di tmux.

Ini semacam pendekatan.

pingsoli
sumber
2
Perhatikan bahwa pintasan ini hanya berarti "akhir data". Ini hanya bekerja jika proses yang sedang berjalan di panel tmux menerima sinyal ini dan berakhir sendiri setelah menerimanya (misalnya seperti halnya bash). Karena tidak ada proses di dalam panel, itu akan ditutup oleh tmux. Tidak berfungsi dalam semua kasus.
nyi
inilah yang saya cari.
thedanotto
1
Ini OK jika ada shell yang berjalan di jendela, tetapi jika hanya ada aplikasi beku, sesuatu yang lebih brutal diperlukan. Jawaban Nikolay Fominyh bekerja dengan baik.
oz1cz
Ini hanya membunuh panel, bukan jendela.
StevieD
1

Secara default
<Prefix>& untuk mematikan jendela
<Prefix>x karena membunuh panel
Dan Anda dapat menambahkan info konfigurasi

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

lalu
<Prefix>X karena membunuh satu sesi

DinoStray
sumber