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

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

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

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

41 голос | спросил Nerian 13 Jpm1000000pmThu, 13 Jan 2011 20:36:24 +030011 2011, 20:36:24

9 ответов


59

Используйте Oh-My-Zsh и добавьте плагин 'osx' в ваш ~ /.zshrc, например:

plugins=(osx)

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

plugins=(osx terminalapp)

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

  

Предпочтения> Профили> По умолчанию> Общие> Рабочий каталог> Повторное использование опции каталога предыдущей сессии

Обновление панели iTerm2 Preferences для повторного использования предыдущего каталога сеанса.

Вот и все, что вам нужно сделать!

ответил Pieter 7 MaramWed, 07 Mar 2012 00:17:06 +04002012-03-07T00:17:06+04:0012 2012, 00:17:06
21

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

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

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

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

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

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

ответил Tim 21 J000000Thursday11 2011, 13:42:49
3

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

добавьте следующее в .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)"
ответил superbly 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 30 Sep 2014 14:22:59 +0400 2014, 14:22:59
1

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

ответил Henno 22 Jpm1000000pmSat, 22 Jan 2011 20:42:57 +030011 2011, 20:42:57
0

Вот как вы это делаете в bash.

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

#!/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

( источник )

ответил Nifle 13 Jpm1000000pmThu, 13 Jan 2011 21:44:03 +030011 2011, 21:44:03
0

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

pwd | pbcopy

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

cd "`pbpaste`"

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


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

pwd > $TMPDIR/wd

Откройте новую вкладку.

cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
ответил Rory O'Kane 7 MarpmThu, 07 Mar 2013 12:48:31 +04002013-03-07T12:48:31+04:0012 2013, 12:48:31
0

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

ответил Case 2 MaramSun, 02 Mar 2014 05:53:46 +04002014-03-02T05:53:46+04:0005 2014, 05:53:46
0

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

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

ответил garageàtrois 16 PMpWed, 16 Apr 2014 22:26:26 +040026Wednesday 2014, 22:26:26
0

Добавление 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.
ответил Steve Root 23 Jpm1000000pmSat, 23 Jan 2016 16:14:09 +030016 2016, 16:14:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132