Sự khác biệt giữa các tùy chọn toàn cầu, máy chủ, phiên và cửa sổ


19

Hướng dẫn tmux thảo luận về các loại tùy chọn khác nhau, ví dụ như tùy chọn toàn cầu , tùy chọn máy chủ , v.v. Câu hỏi Tệp cấu hình tmux mặc định ở đâu? cũng đề cập đến một số loại cấu hình.

Một số loại này rất dễ hiểu: tùy chọn cửa sổ xử lý những thứ chỉ liên quan đến một cửa sổ duy nhất. Ví dụ: "cho phép đổi tên": cửa sổ có tên, phiên không. Đối với các loại khác, tuy nhiên, sự khác biệt không rõ ràng.

Sự khác biệt giữa

  • tùy chọn máy chủ ( set-option -s),
  • tùy chọn phiên toàn cầu ( set-option -g),
  • tùy chọn phiên ( set-option),
  • tùy chọn cửa sổ toàn cầu ( set-window-option -g),
  • tùy chọn cửa sổ ( set-window-option)?

Ngoài ra, các quy tắc thừa kế cho các loại này là gì?

Câu trả lời:


30

Có ba lớp tùy chọn riêng biệt: máy chủ, phiên và cửa sổ. Các lớp này là độc quyền: mỗi tùy chọn chỉ thuộc về một trong các lớp. Không bao giờ có bất kỳ sự kế thừa giữa các lớp tùy chọn.

Chỉ có một cấp tùy chọn máy chủ, do đó không có sự kế thừa ở đó (mặc dù bạn có thể có nhiều máy chủ độc lập bằng cách sử dụng cờ -Lhoặc -Sdòng lệnh).

Mỗi tùy chọn phiên và cửa sổ sử dụng phân cấp hai cấp: tùy chọn phiên toàn cầu (cửa sổ) cung cấp các giá trị mặc định cho các tùy chọn phiên (cửa sổ) không được đặt. Các tùy chọn phiên và cửa sổ đều không được đặt ban đầu, vì vậy các phiên / cửa sổ mới sẽ tự động sử dụng các giá trị tùy chọn phiên / cửa sổ chung.

Khi tùy chọn phiên được đặt ( set-option), giá trị được đặt mới sẽ ghi đè giá trị toàn cục cho phiên đó. Để quay lại sử dụng giá trị toàn cục, bỏ đặt tùy chọn ( set-option -u). Thay đổi đối với các giá trị tùy chọn phiên toàn cầu sẽ ảnh hưởng đến tất cả các phiên trong đó tùy chọn đó hiện không được đặt. Ý tưởng tương tự áp dụng cho các tùy chọn cửa sổ (ngoại trừ cài đặt tùy chọn cửa sổ ghi đè giá trị cho một cửa sổ riêng lẻ thay vì một phiên riêng lẻ).


Ví dụ: để tìm giá trị hiệu quả cho base-indextùy chọn phiên cho một phiên cụ thể:

  • Kiểm tra base-indextùy chọn của phiên (tức là những gì bạn nhận được từ tmux -t «target-session» show-options base-index* ).
    1. Nếu phiên có base-indexgiá trị, sau đó sử dụng nó.
    2. Nếu giá trị của phiên không được đặt, thì hãy sử dụng giá trị toàn cầu (nghĩa là những gì bạn nhận được từ đó tmux show-options -g base-index).

Tương tự, để tìm giá trị hiệu quả cho mode-keystùy chọn cửa sổ cho một cửa sổ cụ thể:

  • Kiểm tra mode-keystùy chọn của cửa sổ (tức là những gì bạn nhận được từ tmux -t «target-window» show-options -w mode-keys** ).
    1. Nếu cửa sổ có mode-keysgiá trị, sau đó sử dụng nó.
    2. Nếu giá trị của cửa sổ không được đặt, thì hãy sử dụng giá trị toàn cầu (nghĩa là những gì bạn nhận được từ tmux show-options -gw mode-keys).

* Các phiên bản cũ hơn của tmux không chấp nhận đối số tên tùy chọn cho show-options. Với những phiên bản đó, bạn sẽ phải làm một cái gì đó như grep cho nó : tmux -t target show-options | grep '^base-index '.
** Điều này giống như tmux show-window-options base-index, nếu bạn thích điều đó tốt hơn. Lệnh liên quan cho các tùy chọn cửa sổ toàn cầu là tmux show-window-options -g base-index.


Đây là một sơ đồ:

                 .---------------.
                ( 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)

Để loại bỏ các tùy chọn máy chủ khỏi các tùy chọn chung: Tùy chọn máy chủ là các tùy chọn không được áp dụng cho các tùy chọn phiên hoặc cửa sổ. Và chỉ có một vài tùy chọn máy chủ có thể được liệt kê theo show -s. Tuy nhiên, từ góc độ sử dụng, các tùy chọn máy chủ không cần thiết IMHO.
Bohr

1
Ý tôi là tôi muốn các tùy chọn máy chủ cũng có thể được chỉ định -gvà xóa -schỉ vì đơn giản UX. Tôi chỉ không nhận được bất kỳ lợi ích nào khi biết một tùy chọn là một tùy chọn máy chủ.
Bohr
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.