Открыть новую вкладку в том же каталоге

скажем, вы находитесь в папке/very/cool/и/deeply/nested/. И вы хотите открыть новую вкладку терминала в той же папке.

Как бы вы это сделали?

Я использую Mac OS и Zsh.

22
задан Braiam
27.11.2022 9:48 Количество просмотров материала 3173
Распечатать страницу

9 ответов

использовать Oh-My-Zsh и добавьте плагин' osx ' в ваш ~/.как zshrc:

plugins=(osx)

Если вы используете приложение терминала OSX, вам также необходимо добавить terminalapp плагин тоже: кредит

plugins=(osx terminalapp)

Если вы используете iTerm, вам нужно установить опцию конфигурации (обратите внимание, что вам не нужны zsh плагины для этой работы):кредит

Настройки > Профили > Параметры > Общие > Каталог > Использовать параметр каталога предыдущего сеанса

iTerm2 Preferences panel update to reuse previous session directory.

Это все, что вам нужно!

59
отвечен Pieter 2022-11-28 17:36

еще один вариант, теперь доступный в Mac OS X Lion, использует встроенную функцию. Он использует "escape-последовательности", чтобы узнать текущий каталог. Для меня это работает, если я использую эти команды в моем .zshrc:

precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}

также можно использовать PS1 (для Bash, от Вики):

export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "

здесь \e]2; является escape-последовательность для печати вещей в заголовке. Это кажется терминал.приложение получает информацию оттуда.

дополнительная информация:

21
отвечен Tim 2022-11-28 19:53

Это очень простая версия, которую я использовал в bash, а также работает в zsh. Он сохраняет текущую папку в файле после каждой команды (не больно слишком много ИМО) и открывает новый терминал в сохраненной текущей папкой.

добавить .zshrc

# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"
3
отвечен superbly 2022-11-28 22:10

gdirs похоже, что это почти так: новая вкладка, затем gdirs, чтобы выбрать deep directory и вуаля. Моя первая идея заключалась в том, чтобы сделать стек каталогов общим для всех вкладок и сделать cd ~1 после новой вкладки, но я не могу найти, как это сделать, поскольку кажется, что каждый экземпляр zsh сохраняет свой собственный. Обмен историей происходит через общий файл, так что, возможно, это можно сделать и здесь...

1
отвечен Henno 2022-11-29 00:27

вот как это делается в bash.

этот скрипт оболочки скажет (тихий буквально, используя Applescript) терминал.приложение, чтобы открыть новую вкладку, а затем переключиться на текущий каталог:

#!/bin/bash
osascript -e 'tell application "Terminal"' \
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \
-e "do script with command \"cd `pwd`;clear\" in selected tab of the front window" \
-e 'end tell' &> /dev/null

... поставил этот скрипт в каталоге в $PATH (т. е. /usr / local / bin) и убедитесь, что это исполняемый файл:

$ chmod +x /usr/local/bin/nt

(источник)

0
отвечен Nifle 2022-11-29 02:44

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

pwd | pbcopy

затем откройте новую вкладку терминала вручную (с ⌘T), а в новой вкладке:

cd "`pbpaste`"

предупреждение: перезапишет содержимое системного буфера обмена.


альтернативный, более длинный метод, который не перезаписывает буфер обмена:

pwd > $TMPDIR/wd

откройте новый вешалка.

cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
0
отвечен Rory O'Kane 2022-11-29 05:01

за комментарий Питера выше, после plugins=(git osx) Плагины установлены, Вы можете просто ввести tab и откроется новая вкладка в текущем каталоге.

0
отвечен Case 2022-11-29 07:18

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

плагин osx сохраняет только последний каталог, но вы должны выполнить команду tab открыть новую вкладку, что не всегда возможно (если, скажем, вы запускаете что-то в текущей вкладке).

0
отвечен garageàtrois 2022-11-29 09:35

добавление terminalapp В.zshrc не работал для меня, поэтому я искал плагин ~/.oh-my-zsh/plugins/terminalapp и он говорит мне:

# This file is intentionally empty.
#
# The terminalapp plugin is deprecated and may be removed in a future release.
# Its functionality has been folded in to the core lib/termsupport.zsh, which
# is loaded for all users. You can remove terminalapp from your $plugins list
# once all your systems are updated to the current version of Oh My Zsh.
0
отвечен Steve Root 2022-11-29 11:52

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх