konfigurasi tmux bersyarat ke OS


Jawaban:


51

Gunakan if-shellperintah:

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

Anda mungkin ingin menempatkan perintah khusus OS dalam file terpisah, dan menjalankannya melalui perintah "file sumber".

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

8
Perintah if-shelldan run-shell tmux saat ini tidak sinkron (pada tmux 1.7); mereka secara efektif menjalankan perintah shell mereka di latar belakang, dan perintah tmux apa pun yang mereka jalankan hanya akan dieksekusi setelah perintah yang datang setelah if-shellatau run-shellperintah itu sendiri ( tmux adalah single-threaded). Secara efektif, jika Anda menggunakan if-shellatau run-shelldalam ~/.tmux.conf, sesi awal (dan sesi, jendela, atau panel yang dibuat secara eksplisit dibuat melalui ~/tmux.conf) akan kekurangan konfigurasi tmux yang diatur melalui if-shellatau run-shellperintah.
Chris Johnsen

1
@ChrisJohnsen if-shellbekerja seperti yang diharapkan untuk saya dengan tmux 1.8. Saya menggunakannya untuk mengatur set-title-string hanya untuk SSH: github.com/blueyed/dotfiles/commit/…
blueyed

2
Ini harus diterima; itu cara yang tepat untuk melakukannya.
Chev

11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 memiliki jawabannya. Chris Johnsen juga layak mendapatkan banyak pujian karena membantu orang-orang dalam masalah GitHub di sini: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

Pada dasarnya, Anda membuat skrip shell yang disebut safe-reattach-to-user-namespaceyang memeriksa keberadaan perintah reattach ... nyata.

#! /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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.