скажем, вы находитесь в папке/very/cool/и/deeply/nested/. И вы хотите открыть новую вкладку терминала в той же папке.
Как бы вы это сделали?
Я использую Mac OS и Zsh.
скажем, вы находитесь в папке/very/cool/и/deeply/nested/. И вы хотите открыть новую вкладку терминала в той же папке.
Как бы вы это сделали?
Я использую Mac OS и Zsh.
использовать Oh-My-Zsh и добавьте плагин' osx ' в ваш ~/.как zshrc:
plugins=(osx)
Если вы используете приложение терминала OSX, вам также необходимо добавить terminalapp
плагин тоже: кредит
plugins=(osx terminalapp)
Если вы используете iTerm, вам нужно установить опцию конфигурации (обратите внимание, что вам не нужны zsh плагины для этой работы):кредит
Настройки > Профили > Параметры > Общие > Каталог > Использовать параметр каталога предыдущего сеанса
Это все, что вам нужно!
еще один вариант, теперь доступный в 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-последовательность для печати вещей в заголовке. Это кажется терминал.приложение получает информацию оттуда.
дополнительная информация:
Это очень простая версия, которую я использовал в 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)"
gdirs похоже, что это почти так: новая вкладка, затем gdirs, чтобы выбрать deep directory и вуаля. Моя первая идея заключалась в том, чтобы сделать стек каталогов общим для всех вкладок и сделать cd ~1 после новой вкладки, но я не могу найти, как это сделать, поскольку кажется, что каждый экземпляр zsh сохраняет свой собственный. Обмен историей происходит через общий файл, так что, возможно, это можно сделать и здесь...
вот как это делается в 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
(источник)
Если вам нужно открыть эту новую вкладку прямо сейчас, без изменения конфигурационных файлов или установки новых плагинов, запустите это:
pwd | pbcopy
затем откройте новую вкладку терминала вручную (с ⌘T), а в новой вкладке:
cd "`pbpaste`"
предупреждение: перезапишет содержимое системного буфера обмена.
альтернативный, более длинный метод, который не перезаписывает буфер обмена:
pwd > $TMPDIR/wd
откройте новый вешалка.
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
за комментарий Питера выше, после plugins=(git osx)
Плагины установлены, Вы можете просто ввести tab
и откроется новая вкладка в текущем каталоге.
Если вы хотите, чтобы каталог автоматически меняться при открытии новой вкладки, используйте dirpersist плагин.
плагин osx сохраняет только последний каталог, но вы должны выполнить команду tab
открыть новую вкладку, что не всегда возможно (если, скажем, вы запускаете что-то в текущей вкладке).
добавление 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.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]