การกำหนดค่า tmux แบบมีเงื่อนไขไปยัง OS


41

tmux.conf ของฉันมีบางบรรทัดที่ฉันต้องการให้รันถ้าระบบปฏิบัติการของฉันเป็น Mac อย่างไรก็ตามฉันต้องการใช้ tmux.conf กับระบบปฏิบัติการหลายระบบ ฉันจะสร้างคำสั่งแบบมีเงื่อนไขให้กับ OS ที่ tmux ทำงานอยู่ได้อย่างไร?


คำตอบ:


51

ใช้if-shellคำสั่ง:

if-shell "uname | grep -q Darwin" "tmux-cmd1; tmux-cmd2;" "tmux-cmd3; tmux-cmd4"

คุณอาจต้องการใส่คำสั่งเฉพาะระบบปฏิบัติการในไฟล์แยกต่างหากและดำเนินการผ่านคำสั่ง "ไฟล์ต้นฉบับ"

if-shell "uname | grep -q Darwin" "source-file .tmux-macosx" "source-file .tmux-linux"

8
if-shellและrun-shell tmuxคำสั่งที่มีอยู่ในปัจจุบันไม่ตรงกัน ( ณtmux 1.7); พวกเขาได้อย่างมีประสิทธิภาพเรียกใช้คำสั่งเปลือกของพวกเขาในพื้นหลังและใด ๆtmuxคำสั่งที่พวกเขาทำงานจะได้รับการดำเนินการหลังจากที่คำสั่งใด ๆ ที่มาหลังจากที่if-shellหรือrun-shellคำสั่งของตัวเอง ( tmuxเป็นเธรดเดียว) อย่างมีประสิทธิภาพหากคุณใช้if-shellหรือrun-shellเข้า~/.tmux.confสู่เซสชันเริ่มต้น (และเซสชันใด ๆ หน้าต่างหรือบานหน้าต่างที่สร้างขึ้นอย่างชัดเจนผ่าน~/tmux.conf) จะขาดการกำหนดค่าtmuxใด ๆ ที่จัดเรียงผ่านif-shellหรือrun-shellคำสั่ง
Chris Johnsen

1
@ChrisJohnsen if-shellทำงานตามที่คาดไว้สำหรับฉันด้วย tmux 1.8 ฉันใช้มันเพื่อตั้ง set-title-string สำหรับ SSH: github.com/blueyed/dotfiles/commit/…
blueyed

2
สิ่งนี้ควรได้รับการยอมรับ มันเป็นวิธีที่เหมาะสมที่จะทำ
Chev

11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8มีคำตอบ นอกจากนี้ Chris Johnsen ยังสมควรได้รับเครดิตจำนวนมากสำหรับการช่วยเหลือผู้คนเกี่ยวกับปัญหา GitHub ที่นี่: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

โดยทั่วไปคุณตั้งค่าเชลล์สคริปต์ที่เรียกsafe-reattach-to-user-namespaceว่าตรวจสอบการมีอยู่ของคำสั่ง reattach จริง ...

#! /usr/bin/env bash

# If reattach-to-user-namespace is not available, just run the command.
if [ -n "$(command -v reattach-to-user-namespace)" ]; then
  reattach-to-user-namespace $@
else
  exec "$@"
fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.