วิธีทำให้ tmux ดูดีและใช้งานง่ายขึ้น (2024)
(hamvocke.com)- สามารถปรับแต่ง คีย์ไบน์ดิง, สี, แถบสถานะ, การทำงานของเมาส์ และอื่น ๆ ได้อย่างอิสระผ่านไฟล์ตั้งค่า
~/.tmux.conf - สามารถเปลี่ยนคีย์ Prefix เริ่มต้นจาก
C-bเป็นC-aและรีแมป Caps Lock เป็น Ctrl เพื่อเพิ่มประสิทธิภาพในการพิมพ์ - สามารถแยกหน้าต่างได้อย่างเป็นธรรมชาติด้วยปุ่ม
|,-แทน",%และรีโหลดไฟล์ตั้งค่าได้ทันทีด้วยปุ่มr - เพิ่มความสะดวกในการใช้งานด้วย Alt + ปุ่มลูกศรเพื่อสลับพาเนล, เปิดใช้โหมดเมาส์ และปิดการเปลี่ยนชื่อหน้าต่างอัตโนมัติ
- สามารถตกแต่ง องค์ประกอบภาพ เช่น สี, แถบสถานะ, ข้อความ, เส้นขอบ ได้อย่างละเอียด เพื่อสร้างธีมที่สอดคล้องกัน
แนวคิดพื้นฐานของการปรับแต่ง tmux
- ไฟล์ตั้งค่า tmux คือ
tmux.confโดยหากวางไว้ที่~/.tmux.confในโฮมไดเรกทอรีของผู้ใช้ ก็จะถูกนำมาใช้เป็นการตั้งค่าส่วนตัว- หากต้องการให้ผู้ใช้หลายคนใช้ร่วมกัน สามารถวางไว้ในไดเรกทอรีระดับระบบได้ โดยตำแหน่งจะแตกต่างกันไปตามระบบปฏิบัติการ
- สามารถตรวจสอบตำแหน่งที่ถูกต้องได้จากคำอธิบายออปชัน
-fในman tmux
- สามารถแก้ไขไฟล์ตั้งค่าเพื่อเปลี่ยน คีย์ไบน์ดิง, สี, แถบสถานะ, การทำงานของเมาส์ และอื่น ๆ ได้อย่างอิสระ
ตั้งค่า Prefix key ให้ใช้งานสะดวกขึ้น
- สามารถเปลี่ยน Prefix key เริ่มต้น
C-bเป็นC-aที่เข้าถึงได้ง่ายกว่าC-aอาจชนกับคำสั่งของ bash ที่ใช้ “ย้ายไปยังต้นบรรทัด”- หากรีแมปปุ่ม Caps Lock เป็น Ctrl ก็จะกดคีย์ผสม Prefix ได้ง่ายขึ้น
- ตัวอย่างการตั้งค่ามีดังนี้
unbind C-b set-option -g prefix C-a bind-key C-a send-prefix - ยังสามารถใช้คำสั่งเดิมของ bash ได้ผ่าน
C-a C-a
คำสั่งแยกหน้าต่างที่เข้าใจง่ายกว่า
- ใช้
|,-ที่มองเห็นได้ตรงความหมายมากกว่าแทนปุ่มแยกหน้าต่างเริ่มต้น",%- ตั้งค่าให้
|เป็นการแยกแนวนอน และ-เป็นการแยกแนวตั้ง - ยกเลิกคีย์ไบน์ดิงเดิม
bind | split-window -h bind - split-window -v unbind '"' unbind % - ตั้งค่าให้
รีโหลดไฟล์ตั้งค่าอย่างรวดเร็ว
- หากแก้ไข
tmux.confบ่อย ๆ ก็สามารถ รีโหลดได้ทันทีด้วยคีย์ลัด- ผูกคำสั่งโหลดไฟล์ตั้งค่าใหม่ไว้กับปุ่ม
r
bind r source-file ~/.tmux.conf - ผูกคำสั่งโหลดไฟล์ตั้งค่าใหม่ไว้กับปุ่ม
สลับพาเนลอย่างรวดเร็ว
- สามารถย้ายระหว่างพาเนลได้ด้วย ปุ่ม Alt (Meta) + ปุ่มลูกศร โดยไม่ต้องกด Prefix
- ย้ายด้วย
Alt-Left,Alt-Right,Alt-Up,Alt-Downตามทิศทางนั้น ๆ
bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D - ย้ายด้วย
เปิดใช้โหมดเมาส์
- สามารถ เลือกหน้าต่างและปรับขนาดพาเนลด้วยเมาส์ ได้
- แม้การใช้งานหลักจะเน้นคีย์บอร์ด แต่มีประโยชน์เมื่อทำงานร่วมกับผู้อื่น
- ใช้บ่อยในการทำ pair programming เป็นต้น
set -g mouse on
ปิดการเปลี่ยนชื่อหน้าต่างอัตโนมัติ
- ป้องกันไม่ให้ชื่อหน้าต่างที่ตั้งด้วยตนเอง ถูกเขียนทับอัตโนมัติเมื่อรันคำสั่ง
set-option -g allow-rename off
เปลี่ยนรูปลักษณ์ของ tmux
- สามารถปรับแต่ง สี, แถบสถานะ, ข้อความ, เส้นขอบพาเนล และอื่น ๆ ได้อย่างละเอียด
- หากอ้างอิงส่วน
STYLESก็สามารถตั้งค่าองค์ประกอบด้านภาพได้หลากหลาย - การใช้สีมาตรฐานของเทอร์มินัล (
red,yellow,blackเป็นต้น) จะช่วยให้เข้ากับธีมได้อย่างเป็นธรรมชาติ - หากใช้โหมด 256 สี สามารถกำหนด
colour0~colour256ได้
- หากอ้างอิงส่วน
- ตัวอย่างการตั้งค่ามีรายการต่อไปนี้
-
ปิดการแจ้งเตือนกระดิ่ง**,** สีของนาฬิกา yellow**,** สไตล์โหมดคัดลอกเป็น fg=black bg=red bold
-
สีเส้นขอบพาเนลเป็น red**,** สีเส้นขอบพาเนลที่กำลังใช้งานเป็น yellow
-
ตำแหน่งแถบสถานะเป็น bottom**,** เว้นช่องว่างด้านซ้าย**,** แสดงเวลาทางด้านขวา
-
สไตล์หน้าต่างปัจจุบัน fg=black bg=red**,** สไตล์หน้าต่างทั่วไป fg=red bg=black
- สไตล์ข้อความ fg=yellow bg=red bold
- การตั้งค่าเหล่านี้ช่วยให้เกิด ชุดสีที่สม่ำเสมอและการแยกแยะทางภาพที่ชัดเจน
-
แหล่งอ้างอิงเพิ่มเติม
- ตัวอย่างการตั้งค่า tmux ที่หลากหลายสามารถดูได้จากคลัง
tmux.confหรือdotfilesบน GitHub- สามารถดูเพิ่มเติมได้ใน
/r/dotfiles,/r/unixpornบน Reddit
- สามารถดูเพิ่มเติมได้ใน
- การตั้งค่าทั้งหมดเปิดเผยไว้ใน คลัง GitHub dotfiles
- หากต้องการศึกษาต่อในระดับลึก แนะนำให้ดู man page ของ tmux และ ส่วน Configuring tmux ใน tmux wiki
- ครอบคลุมฟีเจอร์ล่าสุดและตัวเลือกแบบละเอียดทั้งหมด
- หากต้องการออกแบบธีมสีของเทอร์มินัลด้วยตนเอง สามารถใช้ Root Loops(https://rootloops.sh/) ได้
- รองรับการสร้างชุดสีเทอร์มินัลแบบปรับให้เหมาะกับแต่ละบุคคล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ฉันเคยใช้ tmux มาก่อน แต่พอเจอ Zellij ก็ย้ายไปใช้แบบเต็มตัว
การตั้งค่าแท็บและพาเนลเข้าใจง่ายกว่ามาก และการ เลื่อนหน้าจอและเลือกข้อความ ด้วยเมาส์ก็สะดวก ทำให้คัดลอก·วางได้ง่าย
ลิงก์แบบปุ่ม คัดลอกด้วยคลิกขวา ไม่ได้ และด้านการเข้าถึงก็ไม่ค่อยดี
ใน tmux ฉันใช้ฟีเจอร์นี้ทุก 1~2 นาที แต่ฝั่งนักพัฒนา Zellij บอกให้ pipe ข้อมูลไปยังเอดิเตอร์ ซึ่งมันไม่เข้ากับคลิปบอร์ดของระบบ
สุดท้ายเลยกลับมาใช้ tmux
Zellij มีขนาดราว 50MB แต่ tmux แม้รวมไลบรารีที่ต้องพึ่งพาแล้วก็แค่ประมาณ 2MB ทำให้ ขนาดต่างกันมาก
Zellij ใหญ่เทอะทะขึ้นเรื่อยๆ จนใช้งานลำบาก ตอนนี้ใช้ tmuxp จัดเซสชันและใช้ autossh รักษาการเชื่อมต่อไว้ รู้สึกพอใจกว่ามาก
ถ้าพูดถึงคีย์ไบน์ดิ้ง ^a คือธรรมเนียมของ screen ส่วน ^b คือของ tmux
ถ้าเป็นผู้ดูแลระบบที่ต้องจัดการหลายเครื่อง การ คุ้นกับคีย์แมปมาตรฐานเป็นเรื่องสำคัญ
ฉันเปลี่ยนแค่สี พื้นหลังของพาเนลที่กำลังใช้งาน นาฬิกาพร้อม timestamp และเปิดใช้เมาส์ ส่วนคีย์ไบน์ดิ้งคงเดิม
พอชินแล้วค่าปริยายกลับใช้ง่ายกว่า
ฉันเคยเลิกใช้ tmux แล้วไป Zellij เพราะ Shift+Enter ใช้งานไม่ได้
แต่ Zellij ดัน panic แล้วแครช จนทำให้โปรเซสหายไป สุดท้ายเลยกลับมา tmux
วิธีแก้คือ
"bind-key -T root S-Enter send-keys C-j"และเจอจากประเด็นนี้"bind -n S-Enter send-keys Escape '[13;2u'"pi.dev เตือนว่าไม่มีการตั้งค่า extended-keys แต่ก็ใช้งานได้ดี
ใน tmux พอฆ่าเซิร์ฟเวอร์แล้วโปรเซสลูกก็ถูกเก็บไปด้วย ซึ่งสะดวกดี
\ + Enterก็ได้พอรู้จัก Control Mode ของ tmux แล้วรู้สึกว่าเปลี่ยนเกมไปเลย
ถ้ารัน
tmux -CCใน iTerm2 แท็บ การเลื่อนหน้าจอ การคัดลอก/วาง และคีย์ลัดต่างๆ จะทำงานแบบ เนทีฟของเทอร์มินัลมองเห็นแท็บได้ชัดเจน และมีประโยชน์มากโดยเฉพาะสำหรับมือใหม่
ฉันใช้ Alt+ตัวเลขใน tmux เพื่อ สลับหน้าต่างอย่างรวดเร็ว
เช่น ตั้งค่าแบบ
bind-key -n M-1 select-window -t :1และใช้ Alt-/ เพื่อเปิดโหมดคัดลอกสไตล์ vi ได้ด้วย
ในสภาพแวดล้อม Wayland สามารถใช้
wl-copyเพื่อคัดลอกด้วยการลากเมาส์หรือกดyได้ฉันยังเพิ่มดีไซน์สไตล์ Powerline เข้าไปด้วย แต่ต้องมี powerline-fonts
ฉันปรับแต่ง tmux มากเกินไปจนเวลา ssh เข้าเซิร์ฟเวอร์ใหม่จะลืมวิธีใช้พื้นฐานไปเลย
ตอนนี้เลยใช้ค่าปริยายแล้ว แต่ยังมี การตั้งค่าเมาส์สกอลล์ ที่ต้องเปลี่ยนทุกครั้ง
แนวคิดที่เกี่ยวข้องยังมี The Lisp Curse ด้วย
ตัวอย่างเช่นคง Ctrl-b ไว้เหมือนเดิม แล้วเพิ่ม Ctrl-space เป็นคีย์ลัดเสริม
ฉันทึ่งกับ Control Mode ของ tmux บน iTerm2 มาก
มันทำให้ตัวจัดการหน้าต่างฝั่งโลคัลสามารถ ควบคุมหน้าต่างเทอร์มินัลระยะไกล ได้
ตอนนี้ใน ghostty ก็มีการพัฒนาฟีเจอร์นี้อยู่ เลยตั้งตารอ
หลายคนบอกว่าปุ่ม prefix เริ่มต้นของ tmux (C-b) ใช้ไม่ถนัด แต่ฉันกลับคิดว่า ความไม่ถนัดนี่แหละคือข้อดี
มันแทบไม่มีทางกดพลาด
คำสั่งแบ่งหน้าจอก็เข้าใจง่ายสำหรับฉัน —
%เหมือนเส้นแนวนอน และ"ให้ความรู้สึกเหมือนเส้นแนวตั้งการรีโหลดค่าตั้งใช้บ่อยแค่ช่วงแรกๆ ตอนนี้แทบไม่ได้ใช้แล้ว
ถ้าจำเป็นก็ใส่ใน
.tmux.confได้แบบนี้ ถ้าใช้เฉพาะเครื่องโลคัลก็ไม่ต้องกังวลเรื่องชนกับอะไรฉันรัก tmux แต่กับดักคือมันเหมือนต้องมี ไฟล์ตั้งค่า 400 บรรทัด
สภาพเดิมๆ ไม่ค่อยเป็นมิตร แต่ถ้าแต่งเยอะหน่อยจะยอดเยี่ยมมาก
ดู ไฟล์ตั้งค่าของฉัน เป็นตัวอย่างได้
ฉันจำคีย์ลัดที่จำเป็นแค่ราว 9 อัน
และมีแผนจะเพิ่มเวอร์ชัน PowerShell ด้วย
โดยเปลี่ยนเฉพาะ prefix binding กลับเป็นแบบเดิม
เมื่อก่อนฉันเคยใช้เวลาช่วงสุดสัปดาห์อ่านหนังสือ “tmux 2: mouse-free productivity” แล้วมันเป็นหนึ่งในหนังสือที่ ส่งผลต่อประสิทธิภาพการทำงานของฉันมากที่สุด
รุ่นล่าสุดก็ยังอัปเดตต่อเนื่อง → tmux 3: productive mouse-free development