Jak skonfigurować Tmux, aby uruchamiał się z określonymi oknami otwartymi?
shell
production-environment
tmux
satoru
źródło
źródło
bash --rcfile
aby uzyskać ładną powłokę na naukowym linuksie z włączoną konkretną wersją devtools. Zostawi to tutaj, jeśli ktoś spróbuje zrobić to samo.tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
vim
tam jest polecenie, które ma być wykonane w pierwszym (i tylko w tym czasie) panelu okna. Jeśli zamiast tego chcesz nazwać sesję „vim”, to tak, masz rację, musisz użyć-s
flagi. Cała składnia:tmux new-session -d -s SessionName -n WindowName Command
Próbowałem stworzyć złożoną siatkę paneli i musiałem ciągle radzić sobie z przełączaniem i dzieleniem paneli. Oto moje wnioski:
Pobiera rozpoczęcie nowej sesji. Aby podzielić go na poziomy lub pionowy, użyj go
split-window -h
lub-v
później:Tworzy 3 panele, takie jak to:
Aby uruchomić polecenia w tych panelach, po prostu dodaj je za pomocą
send-keys 'my-command'
polecenia i,C-m
które je wykonuje:Wynikowa sesja powinna tak wyglądać.
Teraz próbowałem ponownie podzielić lewy dolny panel, więc przełączam się z powrotem za pomocą
last-pane
lub w bardziej złożonych oknach,select-pane -t 1
gdzie gdzie1
jest numer panelu w kolejności utworzonej od0
.Robi to. Zasadniczo wiesz, jak sobie radzić
split-window
iselect-pane
wszystko, czego potrzebujesz. Przydatne jest również podanie z-p 75
procentowym rozmiarem panelu utworzonego przez,split-window
aby mieć większą kontrolę nad rozmiarem paneli.W rezultacie sesja wygląda tak
Mam nadzieję, że pomoże
tmux
entuzjastom w przyszłości.źródło
-h -p 30
tworzy poziomy panel z 30% dostępnej wysokości;-v -p 75
to samo dla pionu o szerokości 75%.\:
? Widziałem skrypty działające z tym i bez niego.\;
przekazuje średnik do tmux zamiast bash, umożliwiając wysyłanie poleceń za pomocą jednego wywołania do tmux. stackoverflow.com/questions/20913198/…Możesz pozyskiwać różne sesje od swoich
.tmux.conf
podobnych:A następnie sformatuj sesje według potrzeb:
Otworzyłyby się 2 okna, z których drugie nazwano by foo / bar i byłoby podzielone pionowo na pół (50%) z foo działającym powyżej paska. Fokus byłby w oknie 2 (foo / bar), w górnym okienku (foo).
Następnie możesz rozpocząć preferowaną sesję tmux (w tym przypadku sesję 1) za pomocą PrefixShifts
źródło
Prefix Shift S
Muszę być w tmuxie, a pozyskiwanie pliku próbuje rozpocząć nową sesję, której tmux się nie podoba i nie zrobi tego, chyba że go wymusisz.Użyj tmuxinatora - pozwala na skonfigurowanie wielu sesji i możesz wybrać, która ma zostać uruchomiona w danym momencie. Możesz uruchamiać polecenia w określonych oknach lub oknach i nadawać tytuły oknom. Oto przykład zastosowania z programowaniem aplikacji Django .
Przykładowy plik konfiguracyjny:
Pełne wyjaśnienie znajduje się w pliku README pod powyższym linkiem.
źródło
spójrz @ https://github.com/remiprev/teamocil
możesz określić swoją strukturę za pomocą YAML
źródło
sesja 1
utwórz alias w .bashrc
źródło
neww
? Nigdzie nie mogę znaleźć tego polecenia. ~ Wygląda na tonew-window
, że tak jest , chociaż nie rozumiem, dlaczego używasz zarówno długiej, jak i krótkiej formy.Najpierw miałem podejście z @jasonwryan ale jeśli masz więcej niż 2 konfiguracje, może to być mylące.
Więc stworzyłem funkcję aliasu:
W
~/.tmux/
mam wiele sesji dla wielu zastosowań. Na przykład pracuję dla różnych firm, które mają środowisko deweloperów. Tak więc z powyższą funkcją aliasu mogę po prostu wywołać:tmx company1
i załadować potrzebną konfigurację.Aktualizacja: Celem polecenia „2 $” po
tmux
poleceniu jest przekazanie dodatkowych argumentów tmux.źródło
no server running on /tmp/tmux-1000/default
). Dlatego musiałem załatać polecenietmux new-session
. Ref github.com/fatso83/dotfiles/commit/…Ze skryptu „get.all”, który wywołuję każdego ranka, aby uruchomić kilka kolejnych zadań „get.XXX” w celu odświeżenia oprogramowania, które śledzę. Niektóre z nich są automatycznie zamykane. Inne wymagają więcej interakcji po zakończeniu pobierania (np. Prośba o zbudowanie emacsa).
źródło
Jeśli chcesz po prostu podzielić ekran na 2 panele (powiedzmy poziomo), możesz uruchomić to polecenie (nie są wymagane skrypty tmux ani powłoki):
Twój ekran będzie wyglądał następująco:
źródło
I tak to robię:
Mam jeden plik dla każdego mojego projektu. Możesz także pogrupować je, aby mieć trochę do pracy dla projektów hobbystycznych.
Możesz także przenieść go do
~/bin
folderu, dodać goPATH
i podaćtmux_my_awesome_project
nazwę. Będziesz mógł uruchomić go z każdego miejsca.źródło
To działa dla mnie. Tworzenie 5 okien o podanych nazwach i automatyczne wybieranie do
home
okna.źródło
Spróbuj, stary , to bootstrapper projektu.
Zapewnia łatwą interakcję z apis
tmux
.Wygląda to mniej więcej tak:
Aby uruchomić projekt, wystarczy uruchomić polecenie:
bro start <project_name>
Obejrzyj zrzut ekranu poniżej, który pokazuje, jak zacząć
bro
korzystać ztmux
interfejsu API.https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
źródło
Jest do tego wtyczka tmux.
Sprawdź tmux-resurrect
Lub tmux-continuum
źródło
Powinieneś to określić w pliku konfiguracyjnym tmux (
~/.tmux.conf
), na przykład:(otwiera jedną sesję z 2 oknami z uruchomionym mocpem w pierwszej i mutt w drugiej, a drugą odłączoną sesją z 3 pustymi oknami).
źródło
Stworzyłem ten skrypt . Nie potrzebuje tmuxinatora, rubinu ani innych. To tylko skrypt bash, konfigurowalny:
Plik o nazwie config powinien zawierać coś takiego:
a kod bash powinien być:
źródło
tmux start_server
sam nie uruchamia serwera. Zobacz github.com/tmux/tmux/issues/182tmuxp obsługuje konfigurację sesji JSON lub YAML oraz API Pythona. Prosty plik konfiguracyjny tmuxp do utworzenia nowej sesji w składni YAML to:
źródło
Wtyczka tmux-continuum automatycznie zapisze twoją sesję tmux i załaduje ją przy następnym uruchomieniu tmux, powinna być łatwiejsza do skonfigurowania niż niektóre niestandardowe rozwiązania skryptowe tutaj.
Aby zapisać swoją sesję na żądanie, możesz użyć wtyczki Tmux-Resurrect . tmux-resurrect jest również wymagany do uruchomienia tmux-continuum
źródło
Możesz użyć haczyków tmux do wykonywania poleceń podczas tworzenia nowej sesji. W szczególności osiąga się to za pomocą
session-created
haka.Na przykład, aby podzielić ekran na trzy sposoby z uruchomionym htopem w prawym dolnym rogu, możesz dodać następujący wiersz do
~/.tmux.conf
pliku:Zaletą tej metody jest to, że nie trzeba uruchamiać tmux w żaden specjalny sposób (tj. Skrypt powłoki lub alias), aby uzyskać pożądany wynik. Możesz to również połączyć z
tmux new-session -A -s mysession
opisem w innej odpowiedzi tak aby polecenia przechwytujące były uruchamiane tylko podczas pierwszego tworzenia sesji, a nie przy kolejnych załącznikach.Ta funkcja została dodana przez d15d54c2c w 2016 roku. Pierwsza dostępna wersja to 2.4.
źródło
Właśnie próbowałem użyć wszystkich pomysłów z tej strony i nie podobało mi się żadne z nich. Chciałem tylko rozwiązania, które uruchomiło tmux z określonym zestawem okien, kiedy mój terminal się otworzył. Chciałem też, aby był idempotentny, tzn. Otwarcie nowego okna terminala przejmuje sesję tmux od poprzedniej.
Powyższe rozwiązania często otwierają wiele sesji tmux i chcę tylko jedną. Najpierw dodałem to do mojego
~/.bash_profile
:następnie dodałem do mojego
~/.tmux.conf
:teraz za każdym razem, gdy uruchamiam terminal, uruchamiam tmux lub cokolwiek, albo ponownie przyłączam się do mojej istniejącej konfiguracji (nazwa sesji
default
), albo tworzę nową sesję z tą konfiguracją.źródło
tmux start_server
sam nie uruchamia serwera. Zobacz github.com/tmux/tmux/issues/182Ten skrypt rozpoczyna sesję o nazwie „e” i trzech oknach
źródło