ค้นหาคำถามที่พบเกี่ยวกับ tmux (ปกติฉันใช้หน้าจอ GNU) คำถามของฉันคือสิ่งที่ข้อดีและข้อเสียของพวกเขาแต่ละคน โดยเฉพาะฉันไม่พบ tmux มากนัก
ค้นหาคำถามที่พบเกี่ยวกับ tmux (ปกติฉันใช้หน้าจอ GNU) คำถามของฉันคือสิ่งที่ข้อดีและข้อเสียของพวกเขาแต่ละคน โดยเฉพาะฉันไม่พบ tmux มากนัก
คำตอบ:
จากเว็บไซต์ของพวกเขา :
- tmux แตกต่างจากหน้าจอ GNU อย่างไร มีอะไรให้อีกบ้าง?
tmux มอบข้อดีหลายประการบนหน้าจอ:
- รูปแบบไคลเอนต์ - เซิร์ฟเวอร์ที่กำหนดไว้อย่างชัดเจน: windows เป็นเอนทิตีอิสระซึ่งอาจแนบมาพร้อมกันหลายเซสชันและดูจากไคลเอนต์หลายเครื่อง (เทอร์มินัล) รวมทั้งย้ายอย่างอิสระระหว่างเซสชันภายในเซิร์ฟเวอร์ tmux เดียวกัน
- อินเตอร์เฟสคำสั่งที่สอดคล้องและมีเอกสารอย่างดีพร้อมกับไวยากรณ์เดียวกันไม่ว่าจะใช้แบบโต้ตอบเป็นคีย์การเชื่อมโยงหรือจากเชลล์
- สคริปต์ได้อย่างง่ายดายจากเปลือก;
- บัฟเฟอร์วางหลาย
- ตัวเลือกของเค้าโครงแป้น vi หรือ emacs
- ตัวเลือกเพื่อ จำกัด ขนาดหน้าต่าง
- ไวยากรณ์บรรทัดสถานะที่ใช้งานได้มากขึ้นพร้อมความสามารถในการแสดงบรรทัดแรกของเอาต์พุตของคำสั่งเฉพาะ
- เป็น codebase ที่สะอาดและทันสมัยขยายได้อย่างง่ายดาย
ยังมีหน้าจอคุณสมบัติบางอย่างที่รวม tmux ที่ไม่ใช้:
- builtin สนับสนุนอนุกรมและ telnet; นี่คือการขยายตัวและไม่น่าจะถูกเพิ่มใน tmux
- รองรับแพลตฟอร์มที่กว้างขึ้นเช่น IRIX และ HP-UX และสำหรับเทอร์มินัลคี่
<C-Left>
ในในvim
tmux
ข้อแตกต่างประการหนึ่งคือการที่ทั้งสองทำหน้าที่อย่างไรเมื่อมีเทอร์มินัลหลายตัวเชื่อมต่อกับเซสชันเดียว
ด้วยหน้าจอมุมมองของเทอร์มินัลที่เชื่อมต่อแต่ละรายการจะไม่ขึ้นกับสิ่งอื่น ด้วย tmux เทอร์มินัลที่เชื่อมต่อทั้งหมดจะเห็นสิ่งเดียวกัน
สมมติว่าคุณมีสองเทอร์มินัลที่เชื่อมต่อกับเซสชัน tmux เดียว หากคุณพิมพ์^B1 ลงในเทอร์มินัลหนึ่งเทอร์มินัลอื่นก็จะเปลี่ยนเป็นหน้าต่าง 1
เมื่อคุณมีเทอร์มินัลสองตัวเชื่อมต่อกับเซสชันหนึ่งหน้าจอเดียวและคุณพิมพ์^A1 เป็นหนึ่งมันจะไม่มีผลกระทบกับเทอร์มินัลอื่น
นี้ขึ้นอยู่กับประสบการณ์ของฉันกับ tmux 1.2; ฉันเห็น 1.3 หมดแล้ว แต่ฉันไม่สังเกตเห็นอะไรเลยในรายการเปลี่ยนแปลงเกี่ยวกับการเปลี่ยนแปลงพฤติกรรมนี้
หากเซสชัน tmux ดั้งเดิมของคุณถูกเรียก0
(ค่าดีฟอลต์) คุณสามารถทำได้tmux new-session -t 0
) เพื่อเริ่มเซสชันอิสระใหม่ที่เชื่อมต่อกับชุดหน้าต่างเดียวกันซึ่งจะมีมุมมองเป็นของตัวเอง
tmux new -t 0
shorted
tmux ค่อนข้างใหม่เมื่อเทียบกับหน้าจอ GNU ข้อดี / ข้อเสียเป็นคำถามที่ยากลำบากเนื่องจากทั้งสองโปรแกรมแก้ปัญหาเดียวกันโดยประมาณ tmux ได้รับอนุญาต BSD ในขณะที่หน้าจอคือ GNU GPL เรื่องนี้สำคัญกับบางคน
ในขณะนี้หน้าจอจะแสดงมากขึ้น (บน Linux) นั่นคือคุณมีแนวโน้มที่จะพบมันบนกล่องลินุกซ์ที่กำหนดมากกว่า tmux tmux ถูกแสดงแทนบน OpenBSD มากกว่าเนื่องจากถูกรวมเป็นส่วนหนึ่งของการติดตั้งพื้นฐาน
โปรแกรมทั้งสองอนุญาตให้คุณทำสิ่งเดียวกันแม้ว่าสถานะของสิ่งต่าง ๆ จะซับซ้อนกว่านั้นเล็กน้อย การสลับไปมาระหว่างทั้งสองนั้นไม่ซับซ้อนมากนักเนื่องจากฟังก์ชั่นหน้าจอส่วนใหญ่พบว่ามันเข้ามาใน tmux แม้ว่าคุณจะเป็นผู้ใช้ที่มีพลัง แต่อย่างใดก็ตาม
เช่นเดียวกับโปรแกรมใด ๆ มันขึ้นอยู่กับความต้องการของคุณและสิ่งที่คุณคุ้นเคยกับมันมากขึ้น ให้พวกเขาลองและดูว่าคุณเล่นกับ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ tmux ดูhttps://tmux.github.io/
ความแตกต่างที่ใหญ่ที่สุดในการใช้งานของฉันคือในหน้าจอ Gnu คุณสามารถแยกเฟรมในแนวนอนได้เท่านั้นใน Tmux คุณสามารถแยกได้ทั้งแนวนอนและแนวตั้ง นี่เป็นเป้าหมายที่เคลื่อนที่แม้ว่าฉันจะบอกว่าการแบ่งแนวตั้งทำให้มันเข้าสู่หน้าจอได้
นอกจากนั้นสิ่งต่าง ๆ นั้นเกี่ยวกับความแบน
ฉันคิดว่าฉันจะพูดถึงbyobu
เสื้อคลุมที่พร้อมใช้งานสำหรับหน้าจอที่ทำให้ดีขึ้นมากทันทีที่ออกจากกล่อง ฉันไม่ทราบว่าบางอย่างเช่นนี้มีให้สำหรับ tmux แต่byobu
ทำให้. screenrc ของฉันมีเพียงไม่กี่บรรทัด ลองอ่านบทความฉบับย่อเกี่ยวกับ byobu และสกรีนช็อต หน้าโครงการสำหรับ byobuอธิบายชื่อที่มาจากคำภาษาญี่ปุ่นสำหรับหน้าจอแบบหลายแผงที่ทำหน้าที่เป็นตัวแบ่งห้องพับ นอกจากนี้การเรียกใช้มันไม่เป็นอันตรายต่อการตั้งค่าหน้าจอของคุณดังนั้นคุณสามารถลองได้อย่างปลอดภัย เมื่อคุณเริ่มต้นเซสชันด้วยbyobu
คุณสามารถเชื่อมต่อใหม่โดยใช้screen
และยังไม่หลวมการปรับแต่งใด ๆ ที่ทำโดยbyobu
(ดังนั้นใช้เฉพาะสำหรับการร้องขอเริ่มต้น) ข้อดีหลักสองประการคือ:
ฉันไม่ได้ใช้ส่วนโยงปุ่มลัด แต่พบว่าแถบสถานะมีประโยชน์อย่างแน่นอน
นอกจากนี้คุณอาจพบว่าลิงค์Vs tmuxลิงค์มีประโยชน์ ฉันคิดว่าส่วนใหญ่มันถูกกล่าวถึงแล้วโดยคำตอบที่มีอยู่
byobu
แต่มันก็ง่ายเหมือนการรันคำสั่งและค้นหาด้วยตัวคุณเอง (มันเป็นเมนูขับเคลื่อน) เนื่องจากมันไม่ได้ทำให้การตั้งค่าหน้าจอที่คุณมีอยู่นั้นยุ่งเหยิง และฉันทำให้คำตอบของฉันเป็นชุมชนวิกิดังนั้นฉันสามารถแก้ไขได้โดยง่าย
Drench ยกประเด็นที่น่าสนใจ - พฤติกรรมเริ่มต้นของการเชื่อมต่อสองครั้งไปยังเซสชันเดียวกันนั้นแตกต่างกันใน tmux อย่างไรก็ตามหากคุณต้องการแนบสองครั้งและมีมุมมองอิสระของหน้าต่างในเซสชันนั้น - เริ่ม tmux ด้วย
tmux new-session -t <session name>
ที่จะสร้างเซสชันใหม่สำหรับคุณและแนบหน้าต่างจากเซสชันที่มีอยู่แล้ว หากคุณไม่ได้ตั้งชื่อเซสชันแรกของคุณคุณสามารถเพิ่มหนึ่งรายการด้วย 'เปลี่ยนชื่อเซสชัน'
ข้อเสียอย่างหนึ่งที่สำคัญscreen
ก็คือมันไม่ได้พัฒนาอย่างแข็งขัน หน้าข้อผิดพลาดที่มีเกือบ 200 รายการที่ไม่ได้กำหนดที่จะกลับมากกว่า 5 ปี
tmux
มีปัญหาที่เปิดอยู่เช่นกัน แต่ก็น้อยกว่าและได้รับการสนับสนุนมากกว่านี้
tmux เป็นรุ่นใหม่กว่าและมีคุณสมบัติอื่น ๆ อีกมากมาย
ฉันพบว่าการใช้งานที่ดีขึ้นอยู่กับการตั้งค่าที่ดี
ฉันใช้ vi (vim) เพื่อแก้ไข (ruby on rails) และมีการตั้งค่าบางอย่างเพื่อให้ใช้งานได้ดี
นี่คือไฟล์ ~ / .tmux.conf ที่มีการตั้งค่าที่เป็นประโยชน์มากมาย:
bind r source-file ~/.tmux.conf \; display "Reloaded!" # Reload with ctrl-r
set -g prefix C-a # prefix from ctrl-b to ctrl-a
unbind C-b # allow ctrl-b for other things
set -sg escape-time 1 # quicker responses
bind C-a send-prefix # Pass on ctrl-a for other apps
set -g base-index 1 # Numbering of windows
setw -g pane-base-index 1 # Numbering of Panes
bind \ split-window -h # Split panes horizontal
bind - split-window -v # Split panes vertically
bind h select-pane -L # Switch to Pane Left
bind j select-pane -D # Switch to Pane Down
bind k select-pane -U # Switch to Pane Up
bind l select-pane -R # Switch to Pane Right
bind -r C-h select-window -t :- # Quick Pane Selection
bind -r C-l select-window -t :+ # Quick Pane Selection
bind -r H resize-pane -L 5 # Switch to Pane Left
bind -r J resize-pane -D 5 # Switch to Pane Down
bind -r K resize-pane -U 5 # Switch to Pane Up
bind -r L resize-pane -R 5 # Switch to Pane Right
setw -g mode-mouse off # Mouse Off
set -g mouse-select-pane off # Mouse Off
set -g mouse-resize-pane off # Mouse Off
set -g mouse-select-window off # Mouse Off
setw -g monitor-activity on # Activity Alerts
set -g visual-activity on
set -g status-fg white # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green # Pane colors
set -g pane-border-bg black
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow
set -g message-fg white # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40 # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on # Status Line, right side
set -g status-right "-------"
set -g status-interval 60 # frequency of status line updates
set -g status-justify centre # center window list
setw -g mode-keys vi # vi keys to move
unbind v # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
ฉันจะใช้เสรีภาพในการเพิ่มหนึ่งความแตกต่าง:
tmux ขึ้นกับ ncurses ขณะที่หน้าจอไม่ได้ดึงองค์ประกอบเพิ่มเติม หากมีคนใช้เทอร์มินัลอีมูเลเตอร์ที่รองรับการเลื่อนเขาจะได้รับการเลื่อนด้วยหน้าจอ แต่ไม่ใช้กับ tmux (อย่างน้อยในการกำหนดค่าเริ่มต้น) สิ่งเดียวกันนี้ใช้กับการค้นหาและคุณสมบัติที่คล้ายกัน
ฉันมีปัญหาในการรับหน้าจอเพื่อรองรับ utf-8 และ 256 สี แต่ tmux ทำงานนอกกรอบ