как создать новое окно в текущем каталоге в tmux?

<p>можно ли открыть <code>new-window</code> с рабочим каталогом, установленным на тот, в котором я сейчас нахожусь. я использую <em>zsh</em>, если это имеет значение.</p>

<p>начиная с <em> tmux </em> 1.9 опция <code>default-path</code> была удалена, поэтому вам нужно использовать параметр <code>-c</code> с <code>new-window</code> и <code>split-window</code> (например, путем повторного связывания привязок <code>c</code>, <code>"</code> и <code>%</code> для включения<br> <code>-c '#{pane\_current\_path}'</code>). посмотрите некоторые другие ответы на этот вопрос для деталей.</p><hr><p>соответствующая функция появилась в <em> стволе svn tmux </em> в начале февраля 2012 года. в <em> tmux </em> сборки, содержащие этот код, <em> привязки клавиш tmux </em>, которые вызывают <code>new-window</code>, создадут новое окно с тем же текущим рабочим каталогом, что и активные процессы текущей панели (пока опция сеанса <code>default-path</code> пуста; она по умолчанию). то же самое верно для панели, созданной командой <code>split-window</code>, когда она вызывается через привязку.</p><p>при этом используется специальный код для конкретной платформы, поэтому в настоящее время поддерживаются только определенные ос: darwin (os x), freebsd, linux, openbsd и solaris.</p><p>это должно быть доступно в следующей версии <em> tmux </em> (1.7?).</p><hr><p>с <em> tmux </em> 1.4 я обычно просто использую</p><pre><code>tmux neww </code></pre><p>в оболочке, которая уже имеет желаемый текущий рабочий каталог.</p><p>однако, если я ожидаю создания множества окон с одним и тем же текущим рабочим каталогом (или я хочу иметь возможность запускать их с обычной привязкой ключа <prefix> <code>c</code>), тогда я устанавливаю <code>default-path</code> опция сеанса через</p><pre><code>tmux set-option default-path "$pwd" в командной консоли, в которой уже есть нужный текущий рабочий каталог (хотя вы, очевидно, можете сделать это из любого каталога и просто указать вместо этого значение).если default-path установлено в непустое значение, его значение будет использоваться вместо "наследования" текущего рабочего каталога от вызовов командной строки tmux neww.в <a href="http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/faq"> tmux  faq есть запись под названием "как открыть новое окно в той же директории, что и текущее окно?" это описывает другой подход; это немного запутанный, хотя.

на текущей странице руководства (1.9a) tmux указан необязательный -c start-directory параметр для некоторых команд, включая new-window а также split-window. он также содержит переменную формата pane_current_path, что относится к current path if available.комбинируя их, мы можем открыть новое окно с текущим рабочим каталогом, используя new-window -c "#{pane_current_path}" цитата нужна, если текущий путь содержит пробелы.если вы хотите разделить текущую панель по вертикали, используйте split-window -c "#{pane_current_path}" или, для горизонтального разделения split-window -h -c "#{pane_current_path}"чтобы привязки клавиш открывали новые разделения и окна с текущим рабочим каталогом по умолчанию, добавьте следующее к своему .tmux.conf. " с окружающими кавычками означает, что tmux не должен начинать строку, а должен связывать " ключ.bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}" 

да, используйте new-window -c "#{pane_current_path}". вы можете добавить следующее к вашему ~/.tmux.conf, чтобы сделать его постоянным (с учетом сочетаний клавиш по умолчанию):bind c new-window -c "#{pane_current_path}" bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" default-path настройка пути была <a href="https://github.com/thomasadam/tmux/commit/4538c269d0b366a770a5a5ebfe0c5007569edbc1">удалена из вышестоящего кода, и автор tmux рекомендовал в этом сообщении коммита использовать -c "#{pane_current_path}" или -c "$pwd</code> в <code>new-window</code> а также <code>split-window</code> команды.</p><p><em> я также ответил на это <a href="https://unix.stackexchange.com/q/101949/5576">дублирующий вопрос</a> . </em></p>

<p>в последних версиях tmux (v1.8, но, возможно, и в v1.7):</p><pre><code>tmux new-window -c "$pwd" 

другие ответы не работают для меня, когда я пытаюсь поставить их как привязки (особенно tmux split-window -c). но я создал свое собственное решение, которое я использовал более года, которое работает как для new-window, так и для split:~/.bashrc:ps1="$ps1"'$([ -n "$tmux" ] && tmux setenv tmuxpwd\_$(tmux display -p "#d" | tr -d %) "$pwd")' </code></pre><p><code>~/.tmux.conf</code>:</p><pre><code>unbind-key c bind-key c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "tmuxpwd\_#d" | tr -d %) | sed -e "s/^.*=//")\"; exec $shell"' bind-key c new-window bind-key - run-shell 'tmux split-window -v "cd "$(tmux show-environment $(echo "tmuxpwd_#d" | tr -d %) | sed -e "s/^.=//")"; exec $shell"' bind-key | run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "tmuxpwd\_#d" | tr -d %) | sed -e "s/^.*=//")\"; exec $shell" работает, по крайней мере, с $ (tmux -v) 1.8. смотрите закомментированные строки <a href="https://github.com/erikw/dotfiles/blob/personal/.tmux.conf">здесь</a> для версии, работающей для более старых tmux, у которых нет команды show-environment.</p>

<p>tmux сделал это в версии 1.8, но в 1.9 эта функция была удалена в пользу использования <code>-c</code> флаг.</p><p>это может быть решено, но повторное связывание <code>new-window</code> но если вы хотите запустить что-то еще, оно становится слишком многословным: вместо ввода <code>neww man tmux</code> вам придется набрать <code>neww -c "#{pane\_current\_path}" man tmux</code> что вы, скорее всего, не хотите делать.</p><p>есть мод tmux (я автор), чтобы добавить в tmux надлежащий язык сценариев, чтобы разрешить использование псевдонимов, связывание нескольких команд в режиме, переменных, циклов и т.д. а также, это возвращает это поведение : новые окна и панели открываются в текущем каталоге.</p><p>он может быть построен из источников здесь: <a href="http://ershov.github.io/tmux/">http://ershov.github.io/tmux/</a> </p>