Twój plik konfiguracyjny działa, ale jest kilka komplikacji.
Krótkotrwałe polecenia
Po pierwsze, uruchamiane polecenia (instancje ls ) kończą się bardzo szybko. Okna i panele dla poleceń są tworzone, ale znikają po wyjściu każdego polecenia.
Jeśli Twoim celem jest użycie takich poleceń „jednego strzału” w ostatecznej konfiguracji, prawdopodobnie powinieneś użyć opcji okna remain-on-exit
(i ewentualnie opcji sesji, set-remain-on-exit
aby zapewnić domyślną wartość dla wszystkich okien utworzonych w sesji). Kiedy remain-on-exit
jest ustawione dla okna, nie zniknie ono po wyjściu polecenia. Prawdopodobnie będziesz chciał zmapować respawn-window
klucz (uwaga: odrodzirespawn-window
oryginalne polecenie; respawn-pane
jest również dostępny w tmux 1.5 do odrodzenia pojedynczych paneli).
bind-key R respawn-window
# set global r-o-e so that initial window of initial session gets it
set -g set-remain-on-exit on
# create a session and its windows/panes
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# restore global r-o-e
set -g set-remain-on-exit off
# let session r-o-e inherit from global value for future windows
set -u set-remain-on-exit
Lub, jeśli nie przeszkadza ci, że okno początkowe ma numer 1 zamiast 0, możemy uniknąć zmiany wartości globalnej:
bind-key R respawn-window
# create a session with a throw-away window
new true
# for future windows, stay open after the command exits
set set-remain-on-exit on
# create the windows we really want
neww -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# for future windows, revert r-o-e to global value
set -u set-remain-on-exit
Jeśli używasz tylko ls
jako uproszczonego polecenia zastępczego i faktycznie zamierzasz odrodzić jakieś interaktywne polecenie w swoich oknach / oknach, prawdopodobnie powinieneś po prostu spawnować polecenie, które zamierzałeś w końcu uruchomić. Jeśli przeznaczone komenda trwa zbyt długo uruchomieniem go używać podczas tmux testów, a następnie zastąpić powłokę lub inne proste polecenia (np interaktywne top
, sqlite3
etc.).
new-session
Jest poleceniem domyślnym
Po drugie, uruchomienie tmux bez argumentu polecenia (np. tmux
) Jest równoznaczne z użyciem new-session
polecenia (tzn. tmux
Jest takie samo jak tmux new-session
). Twój .tmux.conf
tworzy sesję dla swoich okien / szyb ( new
jest aliasem new-session
) i kolejna sesja jest tworzony dla niejawnego new-session
polecenia określonego przez rozpoczęciem tmux bez argumentu polecenia. Jeśli używasz domyślnego paska stanu, [1]
po lewej stronie paska stanu zobaczysz symbol „dodatkowej” sesji (początkowa sesja utworzona w polu .tmux.conf
to 0).
Jeśli chcesz uniknąć tworzenia dodatkowej sesji, użyj tmux attach
zamiast zwykłego tmux
. Polecenia z twojego komputera .tmux.conf
uruchomią się, tworząc sesję 0, a następnie klient przyłączy się do tej sesji zamiast tworzyć nową.
splitw
w sobie - nic więcej - i nadal nie otrzymuję podzielonego ekranu, ponieważ to mówi nie można ustanowić bieżącej sesji. Jeśli dodamnew
wcześniej, otrzymam ... jedno okno, jedno okienko. Nie wydaje mi się, żeby moje życie dostało dwie szyby na starcie.new
, a następniesplitw
działa dla mnie, gdy uruchamiam tmux przeztmux attach
. Jedną rzeczą do zapamiętania jest to, że.tmux.conf
(lub plik określony z-f
opcją) jest używany tylko wtedy, gdy nie działa już serwer. Sprawdź, czy serwer działa przeztmux ls
. Jeśli chcesz uruchomić polecenia z pliku, gdy serwer już działa, zrób to w następujący sposób:tmux source-file /path/to/conf-file-that-creates-a-session-and-windows \; attach
(jeśli uruchomisz to, gdy nie ma serwera, najpierw uruchomi się.tmux.conf
(lub-f
plik), a potemsource-file
plik).tmux new -f myconfig
. Zawartość tego pliku konfiguracyjnego zawiera tylkonew
następujące znakisplitw
. Zabijam wszystkie procesy tmux, zanim wypróbuję wiersz poleceńtmux -f myconfig
. Nie dostaję dwóch szyb. Naprawdę nie rozumiem, co robić poza tym punktem (oprócz po prostu rezygnacji z Tmux).-f
czy nie,tmux
bez argumentu polecenia jest taki sam jaktmux new-session
(który dla nowych serwerów utworzy nową sesję nad wszystkim, co robi plik konfiguracyjny). Twoje wstępnie podzielone okno jest tworzone w sesji 0, ale niejawnenew-session
polecenie tworzy (i dołącza) dodatkową sesję (sesja 1; poszukaj[1]
w linii statusu). Użyj,tmux -f myconfig attach
aby uniknąć tworzenia nowej sesji, która ukrywa Twoje okno przed podziałem.Nie jestem pewien, czy rozumiem, co rozumiesz przez „ręczne wprowadzanie”, ale właśnie tak to robię. Napisałem skrypt „autostart”, który uruchamia mój menedżer okien. Zawiera:
gdzie każdy plik .session wygląda mniej więcej tak:
Czekaj, jest więcej! Mam coraz większą liczbę plików .session, które ładuję za pomocą konsoli:
gdzie work_console.tabs wygląda mniej więcej tak:
Następnie naciskam F12, aby uruchomić konsolę.
źródło
załóżmy, że chcesz uruchomić 3 zadania monitorowania serwera (tutaj ping localhost), nie ma potrzeby bałagania się przy plikach konfiguracyjnych i zapisanych sesjach. Wszystko to można zrobić z wiersza polecenia.
źródło
Uważam, że teamocil jest bardzo przydatny do automatyzacji okien / sesji Tmux.
Jest napisany w Ruby, więc musisz go zainstalować.
Oto przykładowa konfiguracja:
Możesz mieć układ okien i podziałów.
źródło
Inną alternatywą podobną do teamcoil jest tmuxinator , aktywnie się rozwija i działa całkiem dobrze. Jest także polecany (i jakby recenzowany) na niesamowitym tmux: Productive Free-Mouse Development from The Pragmatic Bookhelf .
źródło
**
Lepiej zapisz sesję!
** Przekonałem się, że dla leniwego administratora, takiego jak ja, wolę zapisać sesję tmux, niż spędzać godziny próbując zbudować ją idealnie. Administruję ponad 30 serwerami, a moje sesje tmux są dynamiczne, a konfiguracja cały czas się zmienia. To był ból szyi, aż do niedawna odkryłem, że ta wtyczka jest w porządku . Spróbuj. Obecnie repozytoria Ubuntu mają tmux 1.8, ta wtyczka potrzebuje 1.9, więc musisz zaktualizować ręcznie
Następnie możesz go zainstalować
Następnie dodaj tę linię do dolnej części ~ / .tmux.conf (jeśli ~ / .tmux.conf nie jest dostępny, utwórz pusty plik)
Dodam również ten wiersz na końcu ~ / .tmux.conf, aby wtyczka zapisała sesje dla wszystkich programów, które uruchamiam
Następnie przeładuj środowisko tmux.
To jest to! Gotowe. Teraz uruchom tmux jak zwykle, zmień rozmiar swoich paneli, twórz nowe panele, twórz nowe sesje ... itd. Kiedy jesteś zadowolony z konfiguracji, którą osiągnąłeś (w kilku oknach i kilku sesjach), po prostu kliknij ctrl + b, a następnie ctrl + s, aby zapisać sesję. Aby przetestować wyniki, po prostu zabij wszystkie tmux
Następnie uruchom ponownie tmux
Następnie z poziomu tmux kliknij ctrl + b, a następnie ctrl + r (w celu przywrócenia) Magicznie wszystkie okna, panele i sesje są przywracane z tą samą geometrią i układem. Mam nadzieję, że to pomoże.
źródło