2015-09-03 1 views
4

Есть ли способ разделить окно в tmux без изменения текущего фокуса?tmux split-window без изменения фокуса

Я запускаю сценарий внутри одной из панелей tmux, которые иногда запускают «tmux split-window ...» с некоторой командой, которая занимает минуту, чтобы завершить и МОЖЕТ запросить ввод.

Я могу закончить попытку ввода ввода в одну из панелей tmux, но в середине моей записи исходная панель выполняет «tmux split-window ...» и (среднее слово) мой курсор переключается на новый , и я ввожу часть ввода в неправильную область.

ответ

4

Примечание: этот ответ правильный, но устаревший. Правильный способ - использовать флаг -d для команды split-window. Я оставляю этот ответ как демонстрацию, как сделать некоторое яковское бритье с помощью tmux.

A split-window Значок команды, предоставляемый tmux, будет правильным решением для этого. К сожалению, tmux не предоставляет такой командный флаг . Обновление: есть флаг -dsplit-window, который делает это.

  • Простое решение немедленно перейти к предыдущей панели после split-window:

    tmux split-window 
    tmux last-pane 
    

    Это может быть также записана как один лайнер:

    tmux split-window\; last-pane 
    

    Недостатком этого решения является что * теоретически * вы можете написать персонаж в неправильном окне, если вы введете его в промежуток времени между split-window и last-pane командой exe cution.

  • Здесь другой подход с недостатком, что он более сложный.

    Создать новое окно в фоновом режиме и получить pane_id этого окна (обратите внимание, как эта команда завернутые в $(...), потому что мы хотим, чтобы она выполнена в подпроцесс:

    pane_id=$(tmux new-window -d -P -F "#{pane_id}") 
    

    Теперь присоединиться окно мы только что создали с окном, где курсор находится (не изменится курсор фокуса):.

    tmux join-pane -b -t "$pane_id" 
    

    -h Добавить в join-pane выше, если вы хотите, горизонтальный раскол

Я рекомендую использовать первый подход для его простоты. Очень маловероятно, что у вас будут какие-то практические проблемы.

+1

Не будет 'split-window -d' работать? –

+0

D'oh, да, было бы. Я пропустил это, потому что флаг '-d' не был задокументирован для команды split-window' (хотя он находится в списке флагов). Пожалуйста, предоставьте это как ответ, я обновляю свой пост, чтобы указать, что он устарел. –

Смежные вопросы