Màn hình tmux so với GNU [đã đóng]


194

Duyệt qua các câu hỏi tôi tìm thấy về tmux (Tôi thường sử dụng GNU Screen). Câu hỏi của tôi là những ưu và nhược điểm của mỗi người trong số họ. Đặc biệt tôi không thể tìm thấy nhiều về tmux.


9
Cũng được thảo luận tại superuser.com/questions/236158/tmux-vs-screen
Lloyd Dewolf

5
Như bạn có thể thấy từ những câu trả lời hay dưới đây, chúng không dựa trên ý kiến.
rebierpost

@reinierpost - có vẻ như nhiều người ở đây quá nhanh để đóng các câu hỏi là "chủ yếu dựa trên quan điểm". Tuy nhiên, chúng tôi có thể bỏ phiếu để mở lại.
MountainX

Mặc dù câu hỏi này là một câu hỏi so sánh, tôi nghĩ rằng các đối số pro và contra là đủ khách quan và do đó lý do gần gũi không hợp lý ở đây là không ổn. Bạn có thể kiểm tra câu hỏi SU được liên kết, câu trả lời khá ổn.
peterh

Câu trả lời:


122

Từ trang web của họ :

  • Tmux khác với màn hình GNU như thế nào? Nó cung cấp những gì khác?

tmux cung cấp một số lợi thế trên màn hình:

  • một mô hình máy khách-máy chủ được xác định rõ ràng: các cửa sổ là các thực thể độc lập có thể được gắn đồng thời vào nhiều phiên và được xem từ nhiều máy khách (thiết bị đầu cuối), cũng như di chuyển tự do giữa các phiên trong cùng một máy chủ tmux;
  • một giao diện lệnh nhất quán, được ghi chép tốt, với cùng một cú pháp cho dù được sử dụng tương tác, như một ràng buộc chính, hoặc từ vỏ;
  • kịch bản dễ dàng từ vỏ;
  • nhiều bộ đệm dán;
  • lựa chọn bố trí chính vi hoặc emacs;
  • một tùy chọn để giới hạn kích thước cửa sổ;
  • một cú pháp dòng trạng thái có thể sử dụng nhiều hơn, với khả năng hiển thị dòng đầu ra đầu tiên của một lệnh cụ thể;
  • một codebase được cấp phép BSD sạch hơn, hiện đại, dễ dàng mở rộng.

Vẫn còn một vài tính năng màn hình bao gồm mà tmux bỏ qua:

  • dựng sẵn hỗ trợ nối tiếp và telnet; đây là sự phình to và không có khả năng được thêm vào tmux;
  • hỗ trợ nền tảng rộng hơn, ví dụ IRIX và HP-UX và cho các thiết bị đầu cuối lẻ.

4
chết tiệt ... bây giờ tôi muốn thử tmux ... chỉ vì màn hình không hoạt động với tôi do thiếu vi phím.
xenoterracide

1
Liệu vi hoặc emacs keybindings chỉ có nghĩa là tmux đi kèm với hai bộ mặc định thuận tiện? Có thể cấu hình lại hoàn toàn các phím bấm của màn hình với tệp RC của nó.
jw013

Bạn có thể định nghĩa các ràng buộc chính tùy ý. Xem: openbsd.org/cgi-bin/...
NISC

Khi họ nói về việc thực hiện, cuối cùng họ cũng nên giải quyết các lỗi ngớ ngẩn với <C-Left>vimtrong tmux.
yo '

45

Một điểm khác biệt là cách hai người hành động khi nhiều thiết bị đầu cuối được gắn vào một phiên duy nhất.

Với màn hình, mỗi chế độ xem của thiết bị đầu cuối đính kèm độc lập với các chế độ khác. Với tmux, tất cả các thiết bị đầu cuối đính kèm đều nhìn thấy điều tương tự.

Giả sử bạn có hai thiết bị đầu cuối được gắn vào một phiên tmux duy nhất. Nếu bạn gõ ^B1 vào một thiết bị đầu cuối, thiết bị đầu cuối khác cũng chuyển sang cửa sổ 1.

Khi bạn có hai thiết bị đầu cuối được gắn vào một phiên màn hình duy nhất và bạn nhập ^A1 vào một, nó không có hiệu lực trên thiết bị đầu cuối khác.

Điều này dựa trên kinh nghiệm của tôi với tmux 1.2; Tôi thấy 1.3 đã hết nhưng tôi không nhận thấy bất cứ điều gì trong danh sách thay đổi về hành vi thay đổi này.

Nếu bạn thích hành vi màn hình và muốn nó trong tmux:

Nếu phiên tmux ban đầu của bạn được gọi 0(mặc định), thì bạn có thể làm tmux new-session -t 0) để bắt đầu một phiên độc lập mới được kết nối với cùng một bộ cửa sổ, sau đó có thể có chế độ xem riêng.


1
Đây là một sự khác biệt thú vị. Tôi chắc rằng mỗi trong số này có lợi thế, cho các trường hợp sử dụng khác nhau. (lợi thế tmux: hai người được gắn vào cùng một phiên tmux, ví dụ: đối với lập trình cặp từ xa sẽ luôn thấy cùng một điều; lợi thế màn hình: một người được gắn vào cùng một màn hình từ hai nơi cho hai mục đích khác nhau có thể có hai chế độ xem khác nhau, thậm chí đồng thời (với , giả sử, các cửa sổ cạnh nhau (cấp độ hệ điều hành / cửa sổ)).)
lindes

10
nếu phiên tmux ban đầu của bạn được gọi là "0" (mặc định), thì bạn có thể thực hiện "tmux new-session -t 0") để khởi động phiên độc lập mới được kết nối với cùng một bộ cửa sổ, sau đó có thể có phiên bản riêng lượt xem. Tôi khá chắc chắn rằng điều này đã hoạt động trở lại trong 1.2 / 1.3, nhưng tôi không thể nhớ được.
Cos

@cos đây chính xác là mẹo mà tôi đang tìm kiếm. Cảm ơn bạn rất nhiều. Tôi ước tôi có thể bình chọn cho bạn hai lần :) Tôi sẽ bắt đầu gắn lại với 'tmux phiên mới -t 0' mỗi lần.
jrwren

@Cos Điều này đã được thêm vào "TỪ 1.0 ĐẾN 1.1, ngày 5 tháng 11 năm 2009". @jrwren Lệnh có thể rút ngắn tmux new -t 0.
dùng285259

24

tmux khá mới so với màn hình GNU. Ưu điểm / nhược điểm là một câu hỏi khó, vì cả hai chương trình đều giải quyết được cùng một vấn đề. tmux được cấp phép BSD trong khi màn hình là GNU GPL. Điều này quan trọng với một số người.

màn hình được đại diện nhiều hơn (trên Linux) tại thời điểm này, nghĩa là, bạn có nhiều khả năng tìm thấy nó trên một hộp linux nhất định hơn là tmux. Tuy nhiên, tmux được thể hiện nhiều hơn trên OpenBSD vì nó được bao gồm như là một phần của cài đặt cơ sở.

Cả hai chương trình đều cho phép bạn làm cùng một việc, mặc dù trạng thái của mọi thứ phức tạp hơn thế một chút. Chuyển đổi giữa cả hai không quá phức tạp, vì nhiều chức năng của màn hình cũng đã tìm được đường vào tmux, mặc dù nếu bạn là người sử dụng năng lượng của một trong hai, bạn có thể sẽ gặp một số sự thất vọng khi chuyển sang chế độ khác.

Như với bất kỳ chương trình nào, nó thực sự phụ thuộc vào nhu cầu của bạn, và bạn cảm thấy thoải mái hơn. Cung cấp cho họ cả hai thử và xem bạn chơi độc đáo với.

Để biết thêm thông tin về tmux, hãy xem https://tmux.github.io/


17

Sự khác biệt lớn nhất trong việc sử dụng của tôi là trong Màn hình Gnu, bạn chỉ có thể phân chia các khung theo chiều ngang, trong khi ở Tmux, bạn có thể chia cả theo chiều ngang và chiều dọc. Đây là một loại mục tiêu di động, mặc dù như tôi ở đây nói rằng sự phân chia theo chiều dọc đang khiến nó xuất hiện trên màn hình .

Khác sau đó, mọi thứ là về căn hộ.


10
bạn cũng có thể chia theo chiều dọc trên màn hình. mmm ... ít nhất nó hoạt động trong cài đặt màn hình Ubuntu 10.10 mặc định.
Stann

4
@andre đã có một bản vá dài cho phân chia dọc trên màn hình ... chưa bao giờ được tích hợp vào thượng nguồn ... nhưng tôi chắc chắn rằng nhiều bản phân phối đã áp dụng nó.
xenoterracide

17

Tôi nghĩ rằng tôi sẽ chỉ đề cập đến byobutrình bao bọc có sẵn cho màn hình làm cho nó tốt hơn rất nhiều ngay lập tức. Tôi không biết nếu một cái gì đó như thế này có sẵn cho tmux, nhưng byobulàm cho .screenrc của tôi chỉ có một vài dòng. Kiểm tra bài viết nhanh này về byobu và ảnh chụp màn hình. Trang dự án cho byobu mô tả tên bắt nguồn từ một thuật ngữ tiếng Nhật để trang trí, màn hình nhiều bảng đóng vai trò là vách ngăn phòng gấp. Ngoài ra, chỉ chạy nó không làm hại cài đặt màn hình của bạn, vì vậy bạn có thể thử nó một cách an toàn. Khi bạn bắt đầu phiên với byobubạn có thể tự do kết nối lại với nó bằng cách sử dụng screenvà vẫn không mất bất kỳ tùy chỉnh nào được thực hiện bởi byobu(vì vậy chỉ sử dụng nó cho lần gọi ban đầu). Hai ưu điểm chính của nó là:

  • Bắt đầu màn hình với một vài thanh trạng thái với thông tin hữu ích
  • Cung cấp nhiều phím bấm để truy cập chức năng của màn hình dễ dàng hơn

Tôi không sử dụng phần keybindings, nhưng chắc chắn thấy các thanh trạng thái hữu ích.

Ngoài ra, bạn có thể thấy liên kết Screen Vs tmux hữu ích. Tôi nghĩ rằng hầu hết nó đã được đề cập bởi các câu trả lời hiện có.


Câu trả lời của bạn sẽ hữu ích hơn nếu bạn tóm tắt các tính năng của byobu, như câu trả lời này với danh sách các tính năng của nó.
Gilles

OK, tôi đã thêm thông tin vào byobu, nhưng nó đơn giản như chạy lệnh và tự tìm kiếm (nó được điều khiển bằng menu), vì nó không làm rối các cài đặt màn hình hiện tại của bạn. Và tôi đã đưa ra câu trả lời của mình một wiki cộng đồng, vì vậy hãy thoải mái chỉnh sửa nó.
haridsv

1
byobu dường như cũng thực sự hỗ trợ tmux, ít nhất là trong các phiên bản gần đây.
Darael

12

Dbler nêu lên một điểm thú vị - hành vi mặc định của việc kết nối hai lần với cùng một phiên là khác nhau trong tmux. Tuy nhiên, nếu bạn muốn đính kèm hai lần và có chế độ xem độc lập các cửa sổ trong phiên đó - hãy bắt đầu tmux với

tmux new-session -t <session name>

Điều đó sẽ tạo một phiên mới cho bạn và đính kèm các cửa sổ từ phiên đã có. Nếu bạn không đặt tên cho phiên đầu tiên của mình, bạn có thể thêm một phiên với 'đổi tên phiên'.


12

Một khuyết điểm lớn screenlà nó không được phát triển tích cực. Các trang lỗi có gần 200 mục chưa được gán trong hơn 5 năm.

tmux cũng có một số vấn đề mở, nhưng ít hơn nhiều, và được hỗ trợ tích cực hơn.


8

tmux là mới hơn và một số tính năng hơn.

Tôi đã thấy rằng sử dụng tốt phụ thuộc vào thiết lập tốt.

Tôi sử dụng vi (vim) để chỉnh sửa (ruby trên đường ray) và có một vài điều thiết lập để làm cho nó hoạt động tốt.

Đây là tệp ~ / .tmux.conf của tôi với nhiều cài đặt hữu ích:

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 mới hơn, nhưng 'một số tính năng khác' ngụ ý ít nhất nó cũng có tính năng tương đương với màn hình không phải là trường hợp - Ngoài những gì được đề cập ở nơi khác, hỗ trợ đa người dùng của tmux còn thiếu trầm trọng. Không có acls hay status, và nói chung, nó cho thấy sự mới mẻ của tmux ở chỗ những gì bạn có thể làm không được đánh bóng.
bán

Đó là điều tốt để biết. Bây giờ tôi đã sử dụng nó được một năm và không nhận thấy bất kỳ nhu cầu đánh bóng nào mặc dù một chút tiếng Anh có thể giúp ích. Ký hiệu đó là. ok chơi chữ xấu;) Không được sử dụng màn hình trước khi nó không nhận thấy các vấn đề được đề cập. Sẽ khó khăn hơn để chuyển sang màn hình và mất các tính năng mới bây giờ.
Michael Durrant

8

Tôi sẽ tự do thêm một sự khác biệt:

tmux là ncurses dựa trên trong khi màn hình không vẽ các yếu tố bổ sung. Nếu ai đó sử dụng trình giả lập thiết bị đầu cuối hỗ trợ (các) cuộn, anh ta sẽ nhận được cuộn bằng màn hình nhưng không phải với tmux (ít nhất là trong cấu hình mặc định). Điều tương tự áp dụng cho tìm kiếm và các tính năng tương tự.


2
Tôi chưa từng cuộn màn hình như ... bao giờ? : /
souser12345

yeah TE của tôi hỗ trợ cuộn và màn hình phá vỡ nó ... Tôi phải cuộn bằng màn hình. -1 dường như không chính xác.
xenoterracide

@xenoterracide: Hmm. Bạn đúng một phần. Màn hình trên một số distro / hệ thống (Gentoo cũ) không phá vỡ nó trong khi trên một số (Ubuntu mới) thì không. Tôi không biết tại sao.
Maciej Piechotka

có thể là một bản vá ... chúng ta là tất cả các hệ thống 5,5 cent
xenoterracide

6

Tôi gặp khó khăn khi nhận màn hình để hỗ trợ utf-8 và 256 màu nhưng tmux đã hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.