cấu hình tmux có điều kiện cho hệ điều hành


41

Có một số dòng tmux.conf của tôi mà tôi chỉ muốn thực hiện nếu HĐH của tôi là Mac. Tuy nhiên, tôi muốn sử dụng tmux.conf của mình trên nhiều hệ điều hành khác nhau. Làm cách nào tôi có thể tạo một lệnh có điều kiện cho HĐH mà tmux hiện đang chạy?


Câu trả lời:


51

Sử dụng if-shelllệnh:

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

Bạn có thể muốn đặt các lệnh dành riêng cho hệ điều hành trong các tệp riêng biệt và thực thi chúng thông qua lệnh "tệp nguồn".

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

8
Các lệnh if-shellrun-shell tmux hiện không đồng bộ (kể từ tmux 1.7); chúng thực sự chạy lệnh shell của chúng trong nền và bất kỳ lệnh tmux nào chúng chạy sẽ chỉ được thực thi sau bất kỳ lệnh nào xuất hiện sau lệnh if-shellhoặc run-shellchính lệnh đó ( tmux là luồng đơn). Thực tế, nếu bạn sử dụng if-shellhoặc run-shelltham gia ~/.tmux.conf, phiên ban đầu (và bất kỳ phiên, cửa sổ hoặc cửa sổ nào được tạo rõ ràng được tạo thông qua ~/tmux.conf) sẽ thiếu bất kỳ cấu hình tmux nào được sắp xếp thông qua if-shellhoặc run-shellcác lệnh.
Chris Johnsen

1
@ChrisJohnsen if-shellhoạt động như mong đợi đối với tôi với tmux 1.8. Tôi đang sử dụng nó để đặt chuỗi tiêu đề chỉ dành cho SSH: github.com/blueyed/dotfiles/commit/
trộm

2
Điều này nên được chấp nhận; đó là cách thích hợp để làm điều đó
Chev

11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 có câu trả lời. Ngoài ra Chris Johnsen xứng đáng nhận được rất nhiều tín dụng vì đã giúp đỡ mọi người về vấn đề GitHub tại đây: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

Về cơ bản, bạn thiết lập một tập lệnh shell được gọi là safe-reattach-to-user-namespacekiểm tra sự tồn tại của lệnh reattach thực sự.

#! /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
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.