Можно открыть new-window
с рабочим каталогом, в котором я сейчас нахожусь. Я использую zsh , если это имеет значение.
источник
Можно открыть new-window
с рабочим каталогом, в котором я сейчас нахожусь. Я использую zsh , если это имеет значение.
Начиная с tmux 1.9 default-path
вариант был удален, так что вам нужно использовать -c
опцию new-window
, и split-window
(например , путем подмены c
, "
и %
привязки включить
-c '#{pane_current_path}'
). Посмотрите некоторые другие ответы на этот вопрос для деталей.
Соответствующая функция появилась в стволе SVN tmux в начале февраля 2012 года. В сборках tmux, которые включают этот код, вызываемые привязки ключей tmuxnew-window
создадут новое окно с тем же текущим рабочим каталогом, что и активные процессы текущей панели (до тех пор, пока default-path
сеанс опция пуста, она по умолчанию). То же самое верно для панели, созданной split-window
командой, когда она вызывается через привязку.
При этом используется специальный код для конкретной платформы, поэтому в настоящее время поддерживаются только определенные ОС: Darwin (OS X), FreeBSD, Linux, OpenBSD и Solaris.
Это должно быть доступно в следующей версии tmux (1.7?).
С tmux 1.4 я обычно просто использую
tmux neww
в оболочке, которая уже имеет желаемый текущий рабочий каталог.
Однако, если я ожидаю создания множества окон с одним и тем же текущим рабочим каталогом (или я хочу иметь возможность запускать их с помощью обычной c
привязки клавиш <prefix> ), тогда я устанавливаю параметр default-path
сеанса через
tmux set-option default-path "$PWD"
в оболочке, которая уже имеет желаемый текущий рабочий каталог (хотя вы, очевидно, можете сделать это из любого каталога и просто указать вместо этого значение).
Если default-path
задано непустое значение, его значение будет использоваться вместо «наследования» текущего рабочего каталога от вызовов командной строки tmux neww
.
Tmux FAQ есть запись под названием «Как я могу открыть новое окно в том же каталоге, что и текущее окно?» , Который описывает другой подход; это немного запутанный, хотя.
<prefix>c
чтобы прочитать рабочий каталог базового экземпляра оболочки (если таковые имеются) и установитьdefault-path
до выполненияnew-window
. Или это слишком много, чтобы спросить tmux :)/proc/PID/cwd
в Linux)). Существует возможное частичное решение в записи часто задаваемых вопросов по tmux (в командной строке он записывает свой cwd, когда печатает приглашение, а затем связывает ключ, запускающий новую оболочку в записанном каталоге).default-path
сеанса (если оно установлено). В FAQ по tmux есть запись, которая описывает способ привязки ключа, который запускает новое окно с помощью cwd оболочки, запущенной в текущем окне («Как я могу открыть новое окно в том же каталоге, что и текущее окно?») , но метод довольно запутанный. То же самое, вероятно, можно сделать дляsplit-window
иnew-session
(вместоneww
).Текущая страница руководства (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 не должен начинать строку, а должен связывать "ключ.источник
prefix
-:
, затем введитеsource ~/.tmux.conf
tmux source-file .tmux.conf
.Да, используйте
new-window -c "#{pane_current_path}"
. Вы можете добавить следующее к своему,~/.tmux.conf
чтобы сделать его постоянным (предполагая привязки клавиш по умолчанию):default-path
Параметр пути был удален из вышестоящего кода и tmux автора рекомендованного в этом сообщении фиксации с использованием либо-c "#{pane_current_path}"
или-c "$PWD
вnew-window
иsplit-window
командах.Я также ответил в этом двойном вопросе .
источник
В последних версиях tmux (v1.8, но, возможно, и в v1.7):
источник
tmux split-window -v -c "$PWD"
$PWD
у меня не работает в tmux 1.9a. Я должен был использоватьpane_current_path
как предложено выше.Другие ответы не работают для меня, когда я пытаюсь поставить их как привязки (в частности
tmux split-window -c
). Но я создал свое собственное решение, которое я использовал более года, которое работает как для new-window, так и для split:~/.bashrc
:~/.tmux.conf
:Работает, по крайней мере, с $ (tmux -V) 1.8. Смотрите здесь закомментированные строки для версии, работающей для более старых tmux, у которых нет команды show-environment.
источник
tmux сделал это в версии 1.8, но в 1.9 эта функция была удалена в пользу использования
-c
флага.Это может быть решено, но повторное связывание,
new-window
но в случае, если вы хотите запустить что-то еще, это становится слишком многословным: вместо того, чтобы печатать,neww man tmux
вам придется печатать то,neww -c "#{pane_current_path}" man tmux
что вы, скорее всего, не хотите делать.Есть мод tmux (я - автор), чтобы добавить в tmux надлежащий язык сценариев, чтобы разрешить использование псевдонимов, связывание нескольких команд в режиме, переменных, циклов и т. Д. А также, это возвращает это поведение : новые окна и панели открываются в текущем каталоге.
Он может быть построен из источников здесь: http://ershov.github.io/tmux/
источник