Как переключаться между двумя последними окнами в tmux?

Вопрос или проблема

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:

  1. Откройте файл конфигурации tmux, обычно расположенный по адресу ~/.tmux.conf.
  2. Добавьте следующие строки:
    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 в терминал.

Расширенные настройки

Для более универсального перехода, который учитывает как окна, так и панели, вы можете воспользоваться более сложной конфигурацией:

  1. Добавьте в файл ~/.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}"
  2. Создайте скрипт $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 формируют мощный инструмент для управления вашим рабочим пространством и помогут оптимально организовать работу в терминальной среде.

Оцените материал
Добавить комментарий

Капча загружается...