Как изменить директорию нового окна по умолчанию изнутри tmux

43

Я недавно перешел с экрана GNU на tmux .
Я нахожу это довольно похожим, но с большей поддержкой (я переключился из-за проблемы с escape-time в neovim - разрешение было только для tmux).

К сожалению, в tmux я не могу найти команду, подобную этой:

screen -X eval "chdir $(some_dir)"

Приведенная выше команда изменила каталог по умолчанию для нового окна / экрана / панели из экрана GNU, поэтому, когда я нажимал Ctrl+ a(аналог tmux Ctrl+ b) - в $(some_dir)каталоге открывалось новое окно .

Есть ли подобное в tmux?

ОТВЕТ:
Я использовал ответ @Lqueryvg и объединил его с предложением @Vincent Nivoliers для комментария, и это дало мне новую привязку для команды, attach -c "#{pane_current_path}"которая устанавливает мой текущий каталог в качестве каталога по умолчанию.
Спасибо.

Lewiatan
источник
Вы могли бы использовать второй ответ на этот вопрос
Винсент Нивольерс
Спасибо, это полезно. new-window -c "#{pane_current_path}"работает, но мне нужно постоянно устанавливать путь, то есть: я работаю в проекте в / aaa / bbb, но каким-то образом я, когда меняю путь на / ccc / ddd и начинаю новый с Cb и c, я хочу приземлиться еще раз в / ааа / BBB. Можете ли вы найти решение этой проблемы?
Lewiatan
Я лично в порядке с добавлением последних трех строк в моем .tmux.conf. Таким образом, мне нужно только один раз перейти к папке, а затем создать оттуда окна / разделение, но я признаю, что это не решение вашей проблемы, поэтому я не опубликовал ответ!
Винсент Нивольерс

Ответы:

62
  1. Начните tmuxследующим образом:

    (cd /aaa/bbb; tmux)
    

    Теперь любые новые окна (или панели), которые вы создаете, будут запускаться в каталоге /aaa/bbb, независимо от текущего каталога текущей панели.

  2. Если вы хотите изменить каталог по умолчанию, когда tmuxон запущен и работает, используйте attach-sessionс -c.

    Цитирование из справочной tmuxстраницы для attach-session:

    -c will set the session working directory (used for new windows)
    to working-directory.
    

    Например:

    • Ctrl+b :

    • attach -c /ddd/eee

    Новые окна (или панели) теперь будут запускаться в каталоге /ddd/eee, независимо от каталога текущей панели.

Lqueryvg
источник
7
Второй вариант именно то, что я хотел. Я собираюсь использовать attach -c "#{pane_current_path}"то же самое, что и на экране. Спасибо.
lewiatan
Да! attach -cэто именно то, что я искал. Спасибо
Байрон Мэнсфилд
3

Для тех, кто ищет немного больше ссылок, чем предлагает выбранный ответ, был еще один хороший ответ на этот вопрос в StackOverflow:

https://stackoverflow.com/questions/27307815/how-to-change-the-starting-directory-of-a-tmux-session

Который предоставляет способы, которыми вы можете сделать это, не выходя из сеанса, и для тех, кто использует tmux в мультисессионном режиме (как я), ответ выше дает немного лучший контекст относительно того, как attach/ attach-sessionработает.

Посмотрите оба доступных ответа для разных способов их использования. Я нашел, что оба полезны / проницательны.

nicklamuro
источник