Как преобразовать эту конфигурацию сеанса экрана в аналогичную конфигурацию в tmux?

Я пытаюсь переключиться с экрана на tmux. Одна из моих конфигураций screenrc позволяет мне запускать vim (я использую NERD_tree + много разделений vim) в большей части верхней горизонтальной части экрана и сохранять гораздо меньшее разделенное окно внизу для команд оболочки. Часть моего screenrc, связанная с разделением окна:

# start two sessions
screen -t code vim
screen -t shell
# goto screen 0 and split it
select 0
split
# switch to bottom split and make it 8 lines smaller
focus
resize -8
# select screen 1 to show in bottom split
select 1
focus

person Eno    schedule 22.03.2012    source источник


Ответы (2)


(Примечание: это улучшение моего предыдущего ответа)

Мы добавим необходимые команды tmux в файл с именем «vim-session». Давайте сначала посмотрим на содержимое, а затем посмотрим, как использовать файл.

new-session -n code vim
split-window
resize-pane -D 8

Первое, что мы делаем, это создаем новую сессию. Параметр -d пока запрещает нам подключаться к сеансу, а параметр -n называет начальное окно сеанса, в котором мы запускаем vim. Затем мы разделяем окно по вертикали на две панели, одну сверху и одну снизу. Фокус автоматически перемещается на новую панель внизу. Наконец, мы уменьшаем размер текущей панели (-D) на 8 строк.

Вы начнете сеанс tmux, используя

$ tmux -f vim-session attach

Это говорит об использовании файла конфигурации, который мы только что создали, вместо файла по умолчанию ~/.tmux.conf. Мы даем явную команду attach tmux, чтобы он подключился к сеансу, который мы создали (но не подключили) в «vim-session». Без attach tmux неявно создал бы новый сеанс и подключился к нему вместо сеанса, который мы создали в «vim-session».

Немного изменив критерии изменения размера, мы можем удалить вызов resize-pane:

new-session -d -n code vim
split-window -p 30         # Make the new pane 30% of your screen
#split-window -l 10        # Make the new pane exactly 10 lines.

Я не думаю, что есть способ заставить split-window создать новую панель, которая на 8 строк меньше половины.

person chepner    schedule 22.03.2012
comment
Многие ответы, которые я видел, обычно связаны с необходимостью создания отдельного файла, который вы затем должны использовать при запуске tmux или внутри сеанса, иначе вы получите сообщение об ошибке «Не удается установить сеанс». Было бы неплохо, если бы этот дополнительный файл не понадобился... - person Eno; 24.03.2012
comment
Кажется, это дает мне ту же настройку, что и экран, так что спасибо за это. Кстати, -f, похоже, подразумевает, что ~/.tmux.conf будет игнорироваться, верно? (Вскоре понял это после того, как ^a перестала работать как горячая клавиша :-) - person Eno; 26.03.2012
comment
Верно; это, вероятно, самая большая причина использовать сценарий оболочки в моем другом ответе. - person chepner; 26.03.2012

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

#!/bin/bash
tmux new-session -d -s coding-session -n code vim
tmux split-window -p 30
tmux attach-session -t coding-session

Здесь мы выполняем три команды tmux из оболочки. Первый создает новый сеанс, но не присоединяется к нему (чтобы процесс мог завершиться). Второй отправляет команду split-window (предположительно) самому последнему созданному сеансу. Третий подключает клиента к именованному сеансу.

person chepner    schedule 24.03.2012