Genel, sunucu, oturum ve pencere seçenekleri arasındaki fark


19

Tmux el kitabı, global seçenekler , sunucu seçenekleri vb. Gibi çeşitli seçenek türlerini tartışır . Soru varsayılan tmux yapılandırma dosyası var? ayrıca bu tür yapılandırmalardan bazılarını ifade eder.

Bu türlerin bazılarını anlamak kolaydır: pencere seçenekleri yalnızca tek bir pencereyle ilgili olan şeylerle ilgilenir. Örneğin "yeniden adlandırmaya izin ver": pencerelerin adları vardır, oturumlar yoktur. Bununla birlikte, diğer tipler için, ayrım çok net değildir.

Arasındaki fark nedir

  • sunucu seçenekleri ( set-option -s),
  • global oturum seçenekleri ( set-option -g),
  • oturum seçenekleri ( set-option),
  • global pencere seçenekleri ( set-window-option -g),
  • pencere seçenekleri ( set-window-option)?

Ayrıca, bu türler için kalıtım kuralları nelerdir?

Yanıtlar:


31

Üç farklı seçenek sınıfı vardır: sunucu, oturum ve pencere. Bu sınıflar özeldir: her seçenek sınıflardan sadece birine aittir. Opsiyon sınıfları arasında hiçbir zaman miras yoktur.

Yalnızca bir düzey sunucu seçeneği vardır, bu nedenle orada kalıtım yoktur ( -Lveya -Skomut satırı bayraklarını kullanarak birden çok bağımsız sunucunuz olabilir ).

Oturum ve pencere seçeneklerinin her biri iki düzeyli bir hiyerarşi kullanır: genel oturum (pencere) seçenekleri, ayarlanmamış oturum (pencere) seçenekleri için varsayılan değerler sağlar. Oturum ve pencere seçeneklerinin tümü başlangıçta ayarlanmamıştır, bu nedenle yeni oturumlar / pencereler otomatik olarak genel oturum / pencere seçenek değerlerini kullanır.

Bir oturum seçeneği ( set-option) ayarlandığında , yeni ayarlanan değer o oturum için genel değeri geçersiz kılar. Global değeri kullanmaya geri dönmek için ( set-option -u) seçeneğini kaldırın . Genel oturum seçeneği değerlerinde yapılan değişiklikler, söz konusu seçeneğin ayarlanmamış olduğu tüm oturumları etkiler. Aynı fikir pencere seçenekleri için de geçerlidir (pencere seçeneği ayarlamak hariç, tek bir oturum yerine tek bir pencerenin değerini geçersiz kılar).


Örneğin, base-indexbelirli bir oturum için oturum seçeneğinin etkin değerini bulmak için :

  • Oturumun base-indexseçeneğini işaretleyin (örneğin tmux -t «target-session» show-options base-index* ' dan ne alırsınız ).
    1. Oturumun bir base-indexdeğeri varsa, bunu kullanın.
    2. Oturumun değeri ayarlanmadıysa, global değeri (yani, aldığınız değeri tmux show-options -g base-index) kullanın.

Benzer şekilde, mode-keysbelirli bir pencerenin pencere seçeneğinin etkin değerini bulmak için :

  • Pencerenin mode-keysseçeneğini işaretleyin (örn . tmux -t «target-window» show-options -w mode-keys** aldığınız şey ).
    1. Pencerenin bir mode-keysdeğeri varsa, onu kullanın.
    2. Pencerenin değeri ayarlanmadıysa, global değeri (yani, aldığınız değeri tmux show-options -gw mode-keys) kullanın.

* Tmux'un eski sürümleri için bir seçenek adı bağımsız değişkeni kabul etmez show-options. Bu sürümler ile böyle bir şey yapmak zorunda kalacaktır grep bunun için: tmux -t target show-options | grep '^base-index '.
** Bu tmux show-window-options base-indexdaha iyi isterseniz aynıdır . Genel pencere seçenekleri için ilgili komut tmux show-window-options -g base-index.


İşte bir diyagram:

                 .---------------.
                ( server options  )
                 `---------------'

===========================================================

              .----------------------.
             ( global session options )    base-index 1
              `---------+--+---------'     visual-bell on
                     --/    \--
                  --/          \--
           +-----/-----+    +-----\-----+
           | session X |    | session Y |
           +-----------+    +-----------+
           base-index 0     visual-bell off

  effective values for X:
      base-index 0     (set)
      visual-bell on   (global)

  effective values for Y:
      base-index 1     (global)
      visual-bell off  (set)

===========================================================

              .---------------------.
             ( global window options )    pane-base-index 1
              `---------+++---------'     mode-keys emacs
                    ---/ | \---
                 --/     |     \---
             ---/        |         \---
         ---/            |             \---
+-------/----+    +------+-----+    +------\-----+
| window X.0 |    | window X.1 |    | window Y.0 |
+------------+    +------------+    +------------+
pane-base-index 0                   mode-keys vi
mode-keys vi

  effective values for X.0:
      pane-base-index 0   (set)
      mode-keys vi        (set)

  effective values for X.1:
      pane-base-index 1   (global)
      mode-keys emacs     (global)

  effective values for Y.0:
      pane-base-index 1   (global)
      mode-keys vi        (set)

Sunucu seçeneklerini genel seçeneklerden ayırmak için: Sunucu seçenekleri, oturum veya pencere seçeneklerine uygulanmayan seçeneklerdir. Ayrıca, listelenebilecek yalnızca birkaç sunucu seçeneği vardır show -s. Ancak kullanım açısından, sunucu seçenekleri IMHO'ya gerek yoktur.
Bohr

1
Demek istediğim, sunucu seçenekleri de sadece UX sadeliği için belirtilebilir -gve kaldırılabilir -s. Bir seçeneğin bir sunucu seçeneği olduğunu bilerek herhangi bir fayda elde edemiyorum.
Bohr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.