Próbuję powiązać, X
aby wykonać następujące czynności:
- pytaj użytkownika, czy sesja powinna zostać zabita
- jeśli
y
wprowadzono, zabij sesję - po zabiciu sesji wybierz inną sesję (ostatnią, poprzednią lub następną)
Niektóre podobne polecenia, które nie są całkiem poprawne
Zabij sesję i zamknij terminal:
bind X confirm-before -p "Kill #S (y/n)?" kill-session
Pytaj użytkownika o nazwę sesji do zabicia i wybierz następną sesję po zabiciu:
bind X command-prompt -p "kill:" "switch-client -n \; kill-session -t '%%'"
Nie udało mi się znaleźć przykładów podobnych poleceń. Oto rozwiązanie, które nie działa:
bind X confirm-before -p "Kill #S (y/n)?" "SESSION='#S' \; \ switch-client -n \; kill-session -t \"$SESSION\""
tmux display-message -p "#S"
sztuczki w innej odpowiedzi. Wygląda na to, że kluczem było zawijanie wszystkiego w run-shell. Dzięki!confirm-before
? Mam problem z poprawieniem ucieczki.bind-key X run-shell 'tmux switch-client -n \; kill-session -t "#S"'
( tmux 1.8+run-shell
rozwija się#S
bezpośrednio, więc możemy pominąćdisplay-message
i dodatkowe cytowanie)Na wypadek, gdyby ktoś natknął się na to pytanie - tmux-sessionist zapewnia tę funkcjonalność wraz z wieloma innymi.
źródło
Jest inne pytanie, które zadaje podobne pytanie, ale jest nieco inne.
Jeśli chcesz standardowego
choose-session
zachowania z dodatkową funkcją, która zabija oryginalną sesję, jeśli nie są do niej przywiązani inni klienci, to pytanie może być również interesujące.źródło
Rozszerzając odpowiedź Chrisa Johnsena (w komentarzach) powyżej, jak to zrobić bez pytania lub
confirm-before
:Jeśli pozostała tylko 1 sesja (sesja, w której aktualnie się znajdujesz) i uruchomisz polecenie, pojawi się komunikat „błąd”, a sesja nie zostanie zabita. Zwykle (jeśli jesteś podobny do mnie) chcesz, aby polecenie przerywało sesję, nawet jeśli nie ma innej sesji, na którą można by przełączyć. Oto co wymyślę:
źródło