จะยุติหน้าต่างใน tmux ได้อย่างไร?


214

จะยุติหน้าต่างใน tmux ได้อย่างไร? เช่นเดียวกับCtrlakทางลัดในหน้าจอด้วยCtrlaการเป็นคำนำหน้า


2
คุณ googling เพื่ออะไร หากฉันค้นหาชื่อคำถามของคุณนี่เป็นคำถามยอดนิยม มีรายการทางลัดที่มีประโยชน์ (รวมถึงที่ระบุโดย cnicutar ด้านล่าง)
Geoff

29
ทีนี้คำถามนี้คือคำถามยอดฮิตติดอันดับ google ...
jottr

คำตอบ:


43

คำตอบของ Kent ตอบคำถามของคุณอย่างเต็มที่อย่างไรก็ตามหากคุณต้องการเปลี่ยนการกำหนดค่าของ tmux ให้คล้ายกับหน้าจอ GNU นี่คือ 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

นี่เป็น verbose มากเกินไปและไม่ได้ระบุว่าคำถามนั้นได้รับคำตอบ
ที่ไหน

313

ลอง Prefix+&

ถ้าคุณมี

bind q killp

ในของ.tmux.confคุณคุณสามารถกดPrefix+ qเพื่อฆ่าหน้าต่างได้เช่นกันเฉพาะในกรณีที่มีแผงเดียวในหน้าต่างนั้น

เริ่มต้นของคำนำหน้าข้างต้นเป็น Ctrl + b, เพื่อที่จะยุติหน้าต่างโดยเริ่มต้นที่คุณสามารถใช้ Ctrl +b &


5
วิธีนี้ใช้งานได้ดี: Ctrl+b &โปรดทราบว่าคุณต้องยืนยันด้วยyเพื่อฆ่าหน้าต่างปัจจุบันโดยรวมบานหน้าต่างทั้งหมดในหน้าต่างนั้น คุณจะถูกวางไว้ในหน้าต่างที่คุณใช้ล่าสุดก่อนหน้านั้น
rubo77

1
เป็นที่น่าสังเกตว่าโดยค่าเริ่มต้นPrefix+ qแสดงหมายเลขบานหน้าต่างดังนั้นการกำหนดให้killpกับชุดค่าผสมนี้จะแทนที่ทางลัดนี้
kmo

106

<Prefix> & สำหรับฆ่าหน้าต่าง

<Prefix> x สำหรับฆ่าบานหน้าต่าง

หากมีบานหน้าต่างเดียว (เช่นหน้าต่างจะไม่แยกออกเป็นหลายบานหน้าต่าง<Prefix> xจะฆ่าหน้าต่าง)

ในฐานะที่เป็นซ้ำเสมอโดยทั่วไป<Prefix> CTRL+b(ฉันคิดว่าสำหรับคำถามเริ่มต้นเราสามารถพูดได้CTRL+bตลอดเวลาและไม่พูดถึงคำนำหน้าเลย แต่อย่างไรก็ตาม :))


ฉันไม่สามารถฆ่าเพียงบานหน้าต่างที่มี <คำนำหน้า> x เท่านั้นที่มี <คำนำหน้า>: respawn-pane -kพิมพ์แล้ว
Pablo A

87

โดยทั่วไป:

tmux kill-window -t window-number

ตัวอย่างเช่นหากคุณอยู่ในหน้าต่าง 1 และคุณต้องการฆ่าหน้าต่าง 9:

tmux kill-window -t 9

2
นี้. (ขอบคุณมากโดยวิธี!) หากทำในระยะไกลที่ tmux ทำงานในสถานีอื่น ๆ บางหนึ่งสามารถทำตามด้วยINFO=$(tmux new-window -P notepad) tmux kill-window -t $INFO
โยฮันน์

70

สำหรับฉันทางออกดูเหมือนว่า:

  1. ctrl+b q เพื่อแสดงหมายเลขบานหน้าต่าง
  2. ctrl+b x เพื่อฆ่าบานหน้าต่าง

การฆ่าบานหน้าต่างสุดท้ายจะฆ่าหน้าต่าง


2
นี่เป็นทางออกที่ดีที่สุดเมื่อคุณเพิ่งเสร็จสิ้นกระบวนการภายในหน้าต่าง tmux
Philip Kirkbride

1
Killing last pane will kill window. ใช้งานไม่ได้สำหรับฉัน ฉันใช้แม็ค
Andy Aldo

ใช่ฉันคิดว่านี่เป็นทางออกที่ดีที่สุดตลอดกาลและตลอดไป
แคลคูลัส

33

หากคุณต้องการทำเพียงครั้งเดียวโดยไม่ต้องเพิ่มทางลัดคุณสามารถพิมพ์ได้ตลอดเวลา

<prefix> 
:
kill-window
<enter>

10

ในขณะที่คุณถามว่าจะฆ่าหน้าต่างตอบสนอง บานหน้าต่างฉันมักจะไม่ต้องการที่จะฆ่า แต่เพียงเพื่อให้มันกลับสู่สถานะการทำงาน (รูปแบบของบานหน้าต่างมีความสำคัญกับฉันการฆ่าบานหน้าต่างทำลายมันดังนั้นฉันต้องสร้างใหม่); tmux จัดเตรียมrespawnคำสั่งให้กับเอฟเฟกต์: respawn-paneresp respawn-window. เพียงแค่คนอย่างฉันอาจพบทางออกนี้ที่นี่


9

วิธีการต่าง ๆ มากมายในการทำเช่นนี้ แต่สิ่งที่ฉันชอบคือเพียงพิมพ์ 'exit' บน bash prompt


3
นี่หมายความว่า bash กำลังทำงานในหน้าต่าง หน้าต่างที่ฉันต้องการฆ่าซึ่งทำให้ฉันมาที่หน้านี้คือรายการคำสั่ง tmux - ที่ไม่มีเชลล์เพื่อออก
Michael Campbell

1
หากคุณกำลังดูรายการคำสั่งที่แสดงโดย <prefix> +? คุณสามารถออกจากคำสั่งนั้นได้โดยกด q หรือ <RET>
Scott Centoni

8

ctrl + d ฆ่าหน้าต่างใน linux terminal, ยังทำงานใน tmux

นี่เป็นวิธีการหนึ่ง


2
โปรดทราบว่าทางลัดนี้หมายถึง "สิ้นสุดข้อมูล" มันจะทำงานได้หากกระบวนการที่กำลังทำงานอยู่ในบานหน้าต่าง tmux ยอมรับสัญญาณนี้และยุติตัวเองเมื่อได้รับมัน (เช่นการทุบตี) เนื่องจากไม่มีกระบวนการในบานหน้าต่างจึงปิดโดย tmux ไม่สามารถใช้งานได้ในทุกกรณี
nyi

นี่คือสิ่งที่ฉันกำลังมองหา
thedanotto

1
นี่คือตกลงถ้ามีเปลือกที่กำลังทำงานอยู่ในหน้าต่าง แต่ถ้ามีเพียงแอปพลิเคชันที่แช่แข็งบางสิ่งบางอย่างที่โหดร้ายเป็นสิ่งจำเป็นมากขึ้น คำตอบของ Nikolay Fominyh ทำงานได้ดี
oz1cz

นี่เป็นการฆ่าบานหน้าต่างไม่ใช่หน้าต่าง
StevieD

1

โดยค่าเริ่มต้น
<Prefix>& สำหรับการฆ่าหน้าต่าง
<Prefix>x เพื่อฆ่าบานหน้าต่าง
และคุณสามารถเพิ่มข้อมูลการกำหนดค่า

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

จากนั้น
<Prefix>X เพื่อฆ่าเซสชัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.