it-swarm-vi.com

tmux vs. GNU Màn hình

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). Câu hỏi của tôi là ư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.

196
Maciej Piechotka

Từ trang web của họ :

  • Tmux khác với màn hình GNU như thế nào? Nó cung cấp cái 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ừ Shell;
  • kịch bản dễ dàng từ Shell;
  • 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 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ẻ.
124
nisc

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õ ^B 1 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 ^A 1 thành một, nó không có tác dụng với 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 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 là 0 (mặc định), sau đó 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.

45
drench

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 về cùng một thứ, 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 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 cái 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/

25
gabe.

Tôi nghĩ rằng tôi sẽ chỉ đề cập đến trình bao bọc byobu có sẵn cho màn hình giúp nó trở nên tốt hơn rất nhiều ngay khi ra khỏi hộp. Tôi không biết nếu một cái gì đó như thế này có sẵn cho tmux, nhưng byobu làm cho .screenrc của tôi chỉ có một vài dòng. Hãy xem cái này bài viết nhanh về byobu và ảnh chụp màn hình. Trang dự án cho byob 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 byobu, bạn có thể tự do kết nối lại với nó bằng cách sử dụng screen và 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ể tìm thấy Màn hình Vs tmux liên kết 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ó.

18
haridsv

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 phân chia theo chiều dọc đang đưa nó vào màn hình .

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

17
Eli Frey

Một khuyết điểm lớn cho screen là nó không được phát triển tích 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.

12
Harold

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
Rikard Anglerud

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

Tôi đã tìm 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 on Rails) 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"
8
Michael Durrant

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

tmux là 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ự.

8
Maciej Piechotka

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.

6
zvolkov