Konfiguracja tmux zależy od systemu operacyjnego


41

W moim tmux.conf jest kilka wierszy, które chciałbym wykonać tylko wtedy, gdy mój system operacyjny to Mac. Chciałbym jednak użyć mojego pliku tmux.conf na wielu różnych systemach operacyjnych. Jak mogę uzależnić polecenie od systemu operacyjnego, na którym tmux jest obecnie uruchomiony?


Odpowiedzi:


51

Użyj if-shellpolecenia:

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

Możesz umieścić polecenia specyficzne dla systemu operacyjnego w osobnych plikach i wykonać je za pomocą polecenia „plik źródłowy”.

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

8
Te if-shelli run-shell tmux polecenia są obecnie asynchronicznym (od tmux 1.7); efektywnie uruchamiają polecenie powłoki w tle, a wszelkie polecenia tmux , które wykonują, będą wykonywane tylko po poleceniach, które następują po samym poleceniu if-shelllub run-shell( tmux jest jednowątkowy). Skutecznie, jeśli używasz if-shelllub run-shellw ~/.tmux.confpoczątkowa sesji (i sesjach, okna lub szyby stworzone wprost stworzony przez ~/tmux.conf) zabraknie któregokolwiek tmux konfiguracja przeprowadzona przez if-shelllub run-shellpolecenia.
Chris Johnsen

1
@ChrisJohnsen if-shelldziała zgodnie z oczekiwaniami dla mnie z tmux 1.8. Używam go do ustawiania ciągu set-titles-string tylko dla SSH: github.com/blueyed/dotfiles/commit/…
blueyed

2
Należy to zaakceptować; to właściwy sposób, aby to zrobić.
Chev

11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 ma odpowiedź. Również Chris Johnsen zasługuje na wiele uznania za pomoc ludziom w kwestii GitHub tutaj: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

Zasadniczo skonfigurowałeś skrypt powłoki o nazwie safe-reattach-to-user-namespacesprawdzający istnienie polecenia 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.