ความแตกต่างระหว่างตัวเลือกโกลบอลเซิร์ฟเวอร์เซสชันและหน้าต่าง


19

tmux กล่าวถึงคู่มือการประเภทต่างๆของตัวเลือกเช่นตัวเลือกระดับโลก , ตัวเลือกเซิร์ฟเวอร์และอื่น ๆ คำถามไฟล์การกำหนดค่าเริ่มต้นของ tmux อยู่ที่ไหน ยังหมายถึงการกำหนดค่าบางประเภทเหล่านี้

บางประเภทเหล่านี้เข้าใจง่าย: ตัวเลือกหน้าต่างจัดการกับสิ่งต่าง ๆ ที่เกี่ยวข้องกับหน้าต่างเดียวเท่านั้น ตัวอย่างเช่น "allow-rename": windows มีชื่อเซสชันไม่ สำหรับประเภทอื่น ๆ อย่างไรก็ตามความแตกต่างไม่ชัดเจนมาก

อะไรคือความแตกต่างระหว่าง

  • ตัวเลือกเซิร์ฟเวอร์ ( set-option -s),
  • ตัวเลือกเซสชันสากล ( set-option -g)
  • ตัวเลือกเซสชัน ( set-option),
  • ตัวเลือกหน้าต่างทั่วโลก ( set-window-option -g),
  • ตัวเลือกหน้าต่าง ( set-window-option)?

นอกจากนี้กฎการสืบทอดสำหรับประเภทเหล่านี้คืออะไร

คำตอบ:


30

มีตัวเลือกที่แตกต่างกันสามคลาส: เซิร์ฟเวอร์เซสชันและหน้าต่าง คลาสเหล่านี้เป็นแบบเอกสิทธิ์เฉพาะบุคคล: แต่ละตัวเลือกอยู่ในคลาสเดียวเท่านั้น ไม่มีการสืบทอดใด ๆ ระหว่างคลาสตัวเลือก

มีตัวเลือกเซิร์ฟเวอร์เพียงระดับเดียวเท่านั้นดังนั้นจึงไม่มีการสืบทอด (แม้ว่าคุณสามารถมีเซิร์ฟเวอร์อิสระหลายตัวโดยใช้แฟล็กบรรทัดคำสั่ง-Lหรือ-S)

ตัวเลือกเซสชันและหน้าต่างแต่ละตัวใช้ลำดับชั้นสองระดับ: ตัวเลือกเซสชันสากล (หน้าต่าง) ให้ค่าเริ่มต้นสำหรับตัวเลือกเซสชัน (หน้าต่าง) ที่ไม่ได้ตั้งค่า ตัวเลือกเซสชันและหน้าต่างจะไม่ได้รับการตั้งค่าเริ่มต้นดังนั้นเซสชัน / หน้าต่างใหม่จะใช้ค่าตัวเลือกเซสชัน / หน้าต่างส่วนกลางโดยอัตโนมัติ

เมื่อมีการตั้งค่าตัวเลือกเซสชัน ( set-option) ค่าที่ตั้งใหม่จะแทนที่ค่าส่วนกลางสำหรับเซสชันนั้น หากต้องการกลับไปใช้ค่าโกลบอลให้ยกเลิกการตั้งค่าตัวเลือก ( set-option -u) การเปลี่ยนแปลงค่าตัวเลือกเซสชันทั่วโลกจะส่งผลต่อทุกเซสชันที่ตัวเลือกนั้นไม่ได้ถูกตั้งค่าไว้ในปัจจุบัน แนวคิดเดียวกันนี้ใช้กับตัวเลือกหน้าต่าง (ยกเว้นการตั้งค่าตัวเลือกหน้าต่างจะแทนที่ค่าสำหรับแต่ละหน้าต่างแทนแต่ละเซสชัน)


ตัวอย่างเช่นเพื่อค้นหาค่าที่มีประสิทธิภาพสำหรับbase-indexตัวเลือกเซสชันสำหรับเซสชันที่ต้องการ:

  • ตรวจสอบbase-indexตัวเลือกของเซสชั่น(เช่นสิ่งที่คุณได้รับจากtmux -t «target-session» show-options base-index* )
    1. หากเซสชั่นมีbase-indexค่าให้ใช้มัน
    2. หากไม่ได้ตั้งค่าของเซสชันให้ใช้ค่าโกลบอล (เช่นสิ่งที่คุณได้รับจากtmux show-options -g base-index)

เพื่อค้นหาค่าที่มีประสิทธิภาพสำหรับmode-keysตัวเลือกหน้าต่างสำหรับหน้าต่างที่ต้องการ:

  • ตรวจสอบmode-keysตัวเลือกของหน้าต่าง(เช่นสิ่งที่คุณได้รับจากtmux -t «target-window» show-options -w mode-keys** )
    1. หากหน้าต่างมีmode-keysค่าให้ใช้งาน
    2. หากไม่ได้ตั้งค่าของหน้าต่างให้ใช้ค่าทั่วโลก (เช่นสิ่งที่คุณได้รับจากtmux show-options -gw mode-keys)

* รุ่นเก่าtmuxshow-optionsไม่ยอมรับข้อโต้แย้งชื่อตัวเลือกสำหรับ กับรุ่นที่คุณจะต้องทำสิ่งที่ชอบgreptmux -t target show-options | grep '^base-index 'สำหรับมัน
** นี้เป็นเช่นเดียวกับtmux show-window-options base-indexถ้าคุณชอบที่ดีกว่า tmux show-window-options -g base-indexคำสั่งที่เกี่ยวข้องกันสำหรับตัวเลือกหน้าต่างโลก


นี่คือแผนภาพ:

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

วิธีแยกแยะตัวเลือกเซิร์ฟเวอร์จากตัวเลือกส่วนกลาง: ตัวเลือกเซิร์ฟเวอร์เป็นตัวเลือกที่ไม่ได้ใช้กับตัวเลือกเซสชันหรือหน้าต่าง และมีตัวเลือกเซิร์ฟเวอร์เพียงไม่กี่ตัวที่สามารถแสดงshow -sได้ อย่างไรก็ตามจากมุมมองการใช้งานตัวเลือกเซิร์ฟเวอร์ไม่จำเป็นต้องมี IMHO
Bohr

1
ฉันหมายถึงฉันหวังว่าตัวเลือกเซิร์ฟเวอร์ยังสามารถระบุ-gและลบได้-sเพื่อความเรียบง่ายของ UX ฉันไม่ได้รับผลประโยชน์ใด ๆ จากการรู้ว่าตัวเลือกนั้นเป็นตัวเลือกเซิร์ฟเวอร์
Bohr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.