tmux対GNUスクリーン[終了]


194

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



5
以下の良い回答からわかるように、それらは意見に基づくものではありません
reinierpost

@reinierpost-ここの多くの人々は、「主に意見に基づいて」質問を閉じるには早すぎるようです。ただし、再開するには投票できます。
MountainX

この質問は比較の質問ですが、賛否両論は十分客観的であるため、ここでは意見を述べる理由は大丈夫ではないと思います。リンクされたSUの質問を確認できます。答えは大丈夫です。
ペテル

回答:


122

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

  • tmuxはGNU画面とどのように違いますか?他に何が提供されますか?

tmuxには、画面を超えるいくつかの利点があります。

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

tmuxが省略した画面にはまだいくつかの機能があります。

  • 組み込みのシリアルおよびtelnetサポート。これは肥大化しており、tmuxに追加されることはほとんどありません。
  • IRIXやHP-UXなどの幅広いプラットフォームサポート、および奇数の端末向け。

4
いまいましい...今、私はtmuxを試してみたい...スクリーンがviキーバインディングの欠如のために私のために機能しなかったという理由だけで...
xenoterracide

1
viまたはemacsキーバインディングは、tmuxに2つの便利なデフォルトセットが付属していることを意味しますか?rcファイルを使用して、画面のキーバインドを完全に再構成することができます。
jw013

任意のキーバインディングを定義できます。参照:openbsd.org/cgi-bin/...
NISC

彼らが実装について話すとき、彼らは最終的に<C-Left>in vimで愚かなバグを解決するべきtmuxです。
よ」

45

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

画面では、接続されている各端末のビューは他の端末から独立しています。tmuxを使用すると、接続されているすべての端末で同じことがわかります。

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

1つの画面セッションに2つの端末を接続し、^A1つに1 を入力すると、他の端末には影響しません。

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

画面の動作が好きで、tmuxでそれが必要な場合:

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


1
これは興味深い違いです。さまざまなユースケースに対して、これらのそれぞれに利点があると確信しています。(tmuxの利点:同じtmuxセッションに接続されている2人は、たとえばリモートペアプログラミングの場合、常に同じものを見ることができます。画面の利点:2つの異なる目的で2つの場所から同じ画面に接続されている1人は、同時に2つの異なるビューを持つことができます( 、たとえば、サイドバイサイド(OS / windowmanager-level)ウィンドウ)。)
リンデス

10
元のtmuxセッションの名前が「0」(デフォルト)の場合、「tmux new-session -t 0」)を実行すると、同じウィンドウセットに接続された新しい独立したセッションを開始できます。見る。これは1.2 / 1.3で機能していたと確信していますが、覚えていません。
コス

@cosこれはまさに私が探していたヒントです。どうもありがとうございます。私はあなたに2回賛成票を投じることができることを望みます:)毎回 'tmux new-session -t 0'で再アタッチを開始します。
jrwren

@Cosこれは「FROM 1.0 TO 1.1、2009年11月5日」に追加されました。@jrwrenコマンドは短絡できますtmux new -t 0
user285259

24

tmuxは、GNU画面と比較してかなり新しいです。両方のプログラムがほぼ同じ問題を解決するため、利点/欠点は難しい質問です。tmuxはBSDライセンスですが、screenはGNU GPLです。これは一部の人々にとって重要です。

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

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

他のプログラムと同様に、それは本当にあなたのニーズとあなたがどちらに慣れているかに依存します。両方試してみて、どちらが上手く遊んでいるか見てみましょう。

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


17

私の使用における最大の違いは、Gnu Screenではフレームを水平方向にしか分割できないのに対し、Tmuxでは水平と垂直の両方に分割できることです。これは一種の動いているターゲットですが、ここで私が言ったように、垂直方向の分割がscreenに進入していると言います

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


10
画面内で垂直に分割することもできます。mmm ... Ubuntu 10.10のデフォルトのスクリーンインストールで動作しないようにします。
スターン

4
@andreは、画面内の垂直分割用の長年のパッチがありました...それはアップストリームに組み込まれませんでした...しかし、多くのディストリビューションがそれを適用したと確信しています。
xenoterracide

17

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

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

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

また、Screen Vs tmuxリンクが役立つ場合があります。私はそれのほとんどが既存の答えによってすでに言及されていると思います。


この回答と機能のリストのbyobuように、の機能を要約すると、回答がより便利になります。
ジル

OK、詳細を追加しましたbyobuが、既存の画面設定を混乱させないため、コマンドを実行して自分で見つけるのと同じくらい簡単です(メニュー駆動です)。そして、私は自分の回答をコミュニティWikiにしたので、気軽に編集してください。
haridsv

1
byobuは、少なくとも最近のバージョンではtmuxも実際にサポートしているようです。
ダラエル

12

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

tmux new-session -t <session name>

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


12

1つの大きな欠点screenは、積極的に開発されていないことです。バグのページには、近くに200の割り当てられていない項目は、5年間にさかのぼるています。

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


8

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は新しいですが、「いくつかのより多くの機能」は、少なくとも画面と同等の機能を持っていることを意味しますが、そうではありません-他で言及されていることに加えて、tmuxのマルチユーザーサポートは非​​常に不足しています。ACLやステータスはありません。一般的に、tmuxの新しさを示すのは、できることはあまり洗練されていません。
半ば

知っておくといいです。私は今それを1年間使用しており、少しハンガリー語が役立つかもしれませんが、磨く必要はありませんでした。表記法です。ok bad pun;)それ以前にscreenを使用しなかったので、言及された問題に気付かない。今すぐ画面に切り替えて、新しい機能を失うのは難しいでしょう。
マイケルデュラント

8

私は1つの違いを追加する自由を取ります:

tmuxはncursesベースですが、screenは追加の要素を描画しません。誰かがスクロール(s)をサポートするターミナルエミュレータを使用すると、画面でスクロールしますが、tmuxではスクロールしません(少なくともデフォルトの構成では)。同じことは、検索および類似の機能に適用されます。


2
私は今までのように画面でスクロールしたことがありませんか?:/
souser12345

ええ、私のTEはスクロールをサポートしており、画面が壊れます...画面でスクロールする必要があります。-1は正確ではないようです。
xenoterracide

@xenoterracide:うーん。あなたは部分的に正しいです。一部のディストリビューション/システム(古いGentoo)の画面は壊れませんが、一部(新しいUbuntu)の画面は壊れます。理由はわかりません。
マチェイピエチョトカ

おそらくパッチ...私たちのシステムはすべて5.5セントのシステムです
-xenoterracide

6

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.