Mój problem polega na tym, że nie mogę tworzyć tmux
powiązań klawiszy do przełączania okien.
Korzystam z tmux
multipleksera terminali na serwerze FreeBSD. tmux
jest uruchamiany automatycznie dla wszystkich zdalnych loginów przy użyciu ~/.bash_profile
:
if [ $TERM = "xterm" ]; then
( (tmux has-session -t remote && tmux attach-session -t remote) \
|| (tmux new-session -s remote) ) && exit 0
echo "tmux failed to start"
fi
Domyślnie, tmux
okna są przełączane za pomocą Ctrl+B 1, Ctrl+B 2...
Chcę przełączać tmux
okna użyciu F1, F2...
Dodałem więc następujące wiersze ~/.tmux.conf
:
bind-key -n F1 select-window -t :1
bind-key -n F2 select-window -t :2
bind-key -n F3 select-window -t :3
bind-key -n F4 select-window -t :4
bind-key -n F5 select-window -t :5
bind-key -n F6 select-window -t :6
bind-key -n F7 select-window -t :7
bind-key -n F8 select-window -t :8
bind-key -n F9 select-window -t :9
Teraz, kiedy loguję się i naciskam F1, tmux
mówi: „Nie znaleziono okna:: 1”. Próbowałem zmienić bind-key -n F1 select-window -t remote:1
, komunikat o błędzie jest podobny: „Nie znaleziono okna: zdalne: 1”.
Przełączanie okien z wiersza poleceń działa, zarówno, jak tmux select-window -t :1
i tmux select-window -t remote:1
.
Jak mogę sprawić, by działał jako kluczowa oprawa?
źródło
tmux list-windows
pokazuje Czybase-index
ustawiłeś wysoką wartość (tak, że zwykle nie masz okna z indeksem tak niskim jak 1)?tmux list-windows
pokazuje1: bash* (1 panes) [108x48] [layout ce7d,108x48,0,0,0] @0 (active)
.base-index
jest ustawiony na 1 cal~/.tmux.conf
.Odpowiedzi:
Spróbuj sprawdzić niewidoczne znaki w
~/.tmux.conf
pliku. Jestem w stanie odtworzyć twoje symptomy, kiedybind-key
linie kończą się CR (tj. Zakończenia linii w stylu DOS / Windows).Jeśli używasz Vima do edycji, sprawdź za
fileformat
pomocą:set ff?
. Jeśli jest ustawiony nados
, możesz naprawić plik za pomocą tego polecenia:Jeśli
fileformat
zostało już ustawione naunix
, sprawdź poszczególne linie; jeśli są tam znaki CR, powinny pojawić się jako^M
.źródło
tmux select-window -t :1<CR>
nie działało, ponieważ nie ma:1<CR>
okna, a komunikat o błędzie dotyczący brakującego:1<CR>
okna nie wyświetlał<CR>
części. Widzę teraz prawdziwy powód i dziękuję za twoją doskonałą odpowiedź.