Вопрос или проблема
GNU Screen имеет Ctrl-a,Ctrl-a для переключения между двумя последними окнами.
Как это сделать в tmux
?
Для этого в tmux сделайте следующее:
Ctrl-Bl
(это строчная буква ‘L’). Это предполагает, что вы оставили Ctrl-B в качестве клавиши активации.
Если вы хотите использовать те же нажатия клавиш, что и в screen, добавьте следующее в ваш ~/.tmux.conf
:
set-option -g prefix C-a
bind-key C-a last-window
Первое устанавливает Ctrl-A в качестве клавиши активации, второе говорит, что Ctrl-A после активации должно перейти к последнему окну.
Чтобы продолжить идеи fbicknel и Paul:
вы можете
bind-key C-a last-window
bind-key a send-prefix
что позволит вам использовать screen-подобное “ctrl-a a” для вставки ‘ctrl a’
Ответ Пола правильный, но кажется, что он оставляет вас без возможности ввести ^A.
Смотрите эту тему для деталей, но по сути вы можете сделать это, чтобы получить C-a
(^A), если он вам нужен:
bind-key v send-prefix
Теперь, если вы введете C-a v
, вы получите ^A.
Я добавил:
bind-key l last-window
в мой конфигурационный файл tmux, который по умолчанию находится в ~/.tmux.conf
.
Перезагрузите tmux, переключитесь между окнами хотя бы один раз и нажмите:
ctrl+B (префикс по умолчанию) + l (буква строчная “L”) работает безупречно!
Мне нужно было, чтобы оно не учитывало, было ли мое последнее активное действие “окном” или “панелью”. После некоторых усилий я добился этого.
добавьте это в ваш .tmux.conf
set -g focus-events on
bind-key l run-shell "$HOME/bin/tmux-last switch"
set-hook -g pane-focus-out "run-shell 'tmux set-option @last #{pane_id}"
set-hook -g pane-focus-in "run-shell '$HOME/bin/tmux-last in #{@last} #{pane_id}"
А затем создайте это, в нашем случае $HOME/bin/tmux-last:
#!/bin/bash
last="/tmp/tmux-focus-last"
which=$1
if [[ $which == "in" ]]; then
out=$2
in=$3
[[ "$out" == "$in" ]] || echo "$out" > "$last"
elif [[ $which == "switch" ]]; then
to=$(cat "$last")
tmux select-window -t $to
tmux select-pane -t $to
fi
затем выполните
tmux source-file ~/.tmux.conf
Переключитесь несколько раз, и ваша комбинация <tmux-key> + l
должна быть похожа на “alt-tab” без ошибки о том, что вы находитесь в оконном или панельном режиме.
.
Ответ или решение
Пользователи в области ИТ часто сталкиваются с задачей эффективного управления окнами в терминальных мультиплексорах, таких как tmux. Давайте разберемся, как переключаться между двумя последними окнами в tmux, аналогично функции GNU Screen.
Основные команды tmux
Tmux предоставляет широкие возможности для управления окнами и панелями. Для переключения между двумя последними активными окнами в tmux используется комбинация клавиш:
- Ctrl-B, затем l (последовательность заглавных латинских символов «л»). Эта команда работает, если вы оставили Ctrl-B в качестве стандартного префикса.
Переназначение префикса в tmux
Если вы хотите использовать аналогичную комбинацию клавиш, как в GNU Screen (Ctrl-A, Ctrl-A), вам потребуется внести изменения в конфигурационный файл tmux:
- Откройте файл конфигурации tmux, обычно расположенный по адресу
~/.tmux.conf
. - Добавьте следующие строки:
set-option -g prefix C-a bind-key C-a last-window
Тут первая строка устанавливает Ctrl-A как префикс, а вторая позволяет переключаться между последними окнами при нажатии Ctrl-A после этого префикса.
Дополнительные настройки
При переназначении префикса на Ctrl-A, может потребоваться сохранение возможности ввода символа ^A (Ctrl-A) в терминале. Для этого в конфигурацию tmux можно добавить:
bind-key v send-prefix
Это позволит при нажатии Ctrl-A, затем v, отправить символ ^A в терминал.
Расширенные настройки
Для более универсального перехода, который учитывает как окна, так и панели, вы можете воспользоваться более сложной конфигурацией:
- Добавьте в файл
~/.tmux.conf
:set -g focus-events on bind-key l run-shell "$HOME/bin/tmux-last switch" set-hook -g pane-focus-out "run-shell 'tmux set-option @last #{pane_id}" set-hook -g pane-focus-in "run-shell '$HOME/bin/tmux-last in #{@last} #{pane_id}"
-
Создайте скрипт
$HOME/bin/tmux-last
:#!/bin/bash last="/tmp/tmux-focus-last" which=$1 if [[ $which == "in" ]]; then out=$2 in=$3 [[ "$out" == "$in" ]] || echo "$out" > "$last" elif [[ $which == "switch" ]]; then to=$(cat "$last") tmux select-window -t $to tmux select-pane -t $to fi
Заключение
После настройки необходимых параметров вам нужно перезагрузить конфигурацию tmux командой:
tmux source-file ~/.tmux.conf
Затем вы можете наслаждаться удобным переходом между последними окнами или панелями в tmux, используя комбинацию клавиш <Ctrl-B> + l
.
Эта информация предоставит вам подробное понимание настройки tmux для повышения вашей производительности и упрощения рабочих процессов в командной строке. Настройки tmux формируют мощный инструмент для управления вашим рабочим пространством и помогут оптимально организовать работу в терминальной среде.