web-dev-qa-db-ja.com

tmuxとGNU Screen

質問の閲覧 tmuxについて知りました(私は通常GNU Screenを使用しています)。私の質問は、それぞれの長所と短所です。特に見つかりませんでしたtmuxについて。

196

彼らのウェブサイト から:

  • TmuxはGNU screenとどのように違うのですか?他に何を提供していますか?

tmuxには、画面に比べていくつかの利点があります。

  • 明確に定義されたクライアントサーバーモデル:ウィンドウは独立したエンティティであり、複数のセッションに同時に接続され、複数のクライアント(端末)から表示され、同じtmuxサーバー内のセッション間を自由に移動できます。
  • インタラクティブに使用したり、キーバインディングとして使用したり、シェルから使用したりする場合と同じ構文を使用した、一貫性のある、十分に文書化されたコマンドインターフェイス。
  • シェルから簡単にスクリプト可能。
  • 複数の貼り付けバッファ;
  • viまたはemacsの主要なレイアウトの選択。
  • ウィンドウサイズを制限するオプション。
  • 特定のコマンドの出力の最初の行を表示する機能を備えた、より使いやすいステータス行構文。
  • よりクリーンでモダンな、拡張が容易なBSDライセンスのコードベース。

画面には、tmuxが省略した機能がいくつか含まれています。

  • 組み込みシリアルおよびtelnetサポート。これは肥大であり、tmuxに追加される可能性は低いです。
  • iRIXやHP-UXなどのより広いプラットフォームのサポートと、奇数の端末。
124
nisc

1つの違いは、複数の端末が1つのセッションに接続されている場合の2つの動作です。

画面では、接続されている各端末のビューは他の端末から独立しています。 tmuxでは、接続されているすべての端末が同じものを認識します。

1つのtmuxセッションに2つの端末が接続されているとします。入力した場合 ^B 1を1つの端末にすると、他の端末もウィンドウ1に切り替わります。

1つの画面セッションに2つの端末を接続していて、次のように入力した場合 ^A 1から1へ、それは他のターミナルに影響を与えません。

これは、tmux 1.2での私の経験に基づいています。 1.3がリリースされたようですが、この動作の変更に関する変更ログには何も気づきませんでした。

画面の動作が気に入ってtmuxに入れたい場合:

元のtmuxセッションが0(デフォルト)の場合、tmux new-session -t 0)同じセットのウィンドウに接続された新しい独立したセッションを開始し、独自のビューを持つことができます。

45
drench

tmuxはGNU画面と比べるとかなり新しいものです。どちらのプログラムもほぼ同じ問題を解決するため、長所と短所は難しい問題です。 tmuxはBSDライセンスで、screenはGNU GPLです。これは一部の人にとって重要です。

現在のところ、画面は(Linuxで)より表現されています。つまり、tmuxよりも特定のLinuxボックスで画面を見つける可能性が高くなります。ただし、tmuxはベースインストールの一部として含まれているため、OpenBSDではより多く表現されます。

どちらのプログラムでも同じことを実行できますが、状態はそれよりも少し複雑です。画面の機能の多くもtmuxに組み込まれているため、2つを切り替えるのはそれほど複雑ではありませんが、どちらかをパワーユーザーが使用している場合は、もう一方に切り替えるときに不満が生じる可能性があります。

他のプログラムと同様に、それは本当にあなたのニーズ、そしてあなたがより快適であるものに依存します。両方を試してみて、どれが上手にプレイできるかを確認してください。

Tmuxの詳細については、 https://tmux.github.io/ を参照してください

25
gabe.

画面で使用できるbyobuラッパーについて簡単に説明すると、箱から出してすぐにそれがずっと良くなると思いました。このようなものがtmuxで使用できるかどうかはわかりませんが、byobuを使用すると、.screenrcはほんの数行になりました。これをチェックしてください クイック記事 byobuとスクリーンショットについて。 byobuのプロジェクトページ は、折り畳み式の部屋の仕切りとして機能する装飾的なマルチパネルスクリーンの日本語の用語に由来する名前を説明しています。また、実行しても画面の設定に影響はないため、安全に試すことができます。 byobuでセッションを開始すると、screenを使用して自由に再接続でき、byobuによって行われたカスタマイズが失われることはありません(したがって、最初の呼び出しにのみ使用してください)。それの2つの主な利点は次のとおりです。

  • 有用な情報を示す2つのステータスバーで画面を開始します
  • 画面の機能に簡単にアクセスするための多くのキーバインドを提供します

私はキーバインドの部分を使用していませんが、ステータスバーは便利です。

また、あなたは Screen Vs tmux リンクが役立つかもしれません。そのほとんどは、既存の回答ですでに言及されていると思います。

18
haridsv

私の使用における最大の違いは、Gnu Screenではフレームを水平方向にしか分割できないのに対し、Tmuxでは水平方向と垂直方向の両方に分割できることです。これは一種の移動するターゲットですが、ここでは 垂直分割により画面に表示されるようになります です。

それ以外は、物事はほぼフラットです。

17
Eli Frey

screenの大きな欠点の1つは、積極的に開発されていないことです。 バグページ には、5年間で200に近い未割り当てのアイテムがあります。

tmuxにもいくつかの未解決の問題がありますが、はるかに少なく、より積極的にサポートされています。

12
Harold

Drenchは興味深い点を挙げています。同じセッションに2回接続するデフォルトの動作はtmuxでは異なります。ただし、2回アタッチして、そのセッションのウィンドウを個別に表示したい場合は、次のコマンドでtmuxを起動します。

tmux new-session -t <session name>

これにより、新しいセッションが作成され、既存のセッションからウィンドウがアタッチされます。最初のセッションに名前を付けなかった場合は、「rename-session」で追加できます。

12
Rikard Anglerud

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"
8
Michael Durrant

私は自由に1つの違いを追加します。

tmuxはncursesベースですが、画面は追加の要素を描画しません。誰かが(s)スクロールをサポートする端末エミュレーターを使用する場合、(少なくともデフォルトの構成では)画面ではスクロールしますが、tmuxではスクロールしません。同じことが検索や類似の機能にも当てはまります。

8

画面でutf-8と256色をサポートするのに問題がありましたが、tmuxはそのまま使用できました。

6
zvolkov