Скажіть, ви перебуваєте у / дуже / круто / та / глибоко / вкладено / у папку. І ви хочете відкрити нову вкладку терміналу в тій же папці.
Як би ти це зробив?
Я використовую Mac OS та Zsh.
Скажіть, ви перебуваєте у / дуже / круто / та / глибоко / вкладено / у папку. І ви хочете відкрити нову вкладку терміналу в тій же папці.
Як би ти це зробив?
Я використовую Mac OS та Zsh.
Відповіді:
Використовуйте Oh-My-Zsh і додайте плагін 'osx' у свій ~ / .zshrc, наприклад:
plugins=(osx)
Якщо ви використовуєте термінальний додаток OSX, вам також потрібно додати terminalapp
плагін: Credit
plugins=(osx terminalapp)
Якщо ви використовуєте Iterm вам необхідно встановити опцію конфігурації ( Зверніть увагу , що ви можете не потрібні плагін ЗША для цієї роботи ): кредит
Налаштування> Профілі> За замовчуванням> Загальне> Робочий каталог> Використовуйте параметр каталогу каталогу попереднього сеансу
Це все, що вам потрібно зробити!
rails
запущений, і я намагаюся відкрити нове вікно за допомогою команд-n, я повертаюся до себе в домашній каталог.
Інший варіант, який зараз доступний у Mac OS X Lion, - це використання вбудованої функції. Він використовує "послідовності втечі", щоб дізнатися поточний каталог. Для мене це працює, якщо я використовую ці команди у своєму .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;
послідовність виходу для друку речей на заголовку. Це здається , що Terminal.app отримує інформацію від там.
Більше інформації:
/etc/bashrc
ви побачите, що він також підтримує новий код евакуації для інформування терміналу робочого каталогу за допомогою file:
URL-адреси, яка може обробляти всі дійсні імена шляхів за допомогою кодування відсотків (заголовки вікон / вкладок можуть містити лише підмножину символів ASCII ).
\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?
Це дуже проста версія, яку я використовував у 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)"
gdirs здається способом майже зробити це: нова вкладка, потім gdirs для вибору глибокого каталогу та вуаля. Моя перша ідея полягала в тому, щоб зробити стек каталогів спільним серед усіх вкладок і зробити cd ~ 1 після нової вкладки, але я не можу знайти, як це зробити, оскільки, здається, кожен екземпляр zsh зберігає своє. Обмін історією відбувається через загальний файл, тому, можливо, це можна зробити і тут ...
Ось як ви це робите в баш.
Цей скрипт оболонки скаже (тихо буквально, використовуючи 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
( джерело )
Якщо вам потрібно відкрити цю нову вкладку прямо зараз, не змінюючи конфігураційні файли чи встановлюючи нові плагіни, запустіть це:
pwd | pbcopy
Потім відкрийте нову вкладку Термінал вручну (за допомогою ⌘T) і в новій вкладці:
cd "`pbpaste`"
Попередження : це замінить вміст буфера обміну системи.
Альтернативний, довший метод, який не замінює буфер обміну:
pwd > $TMPDIR/wd
Відкрийте нову вкладку.
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
Якщо ви хочете, щоб каталог автоматично змінювався при відкритті нової вкладки, використовуйте плагін dirpersist .
Плагін OSX зберігає останню директорію, але вам потрібно виконати команду, tab
щоб відкрити нову вкладку, що не завжди можливо (якщо, скажімо, ви працюєте щось у вашій поточній вкладці).
Додавання терміналапп до .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.