Câu trả lời:
Sử dụng Oh-My-Zsh và thêm plugin 'osx' trong ~ / .zshrc của bạn như sau:
plugins=(osx)
Nếu bạn sử dụng Ứng dụng đầu cuối của OSX, bạn cũng cần thêm terminalapp
plugin: tín dụng
plugins=(osx terminalapp)
Nếu bạn sử dụng iTerm, bạn cần đặt tùy chọn cấu hình ( Lưu ý rằng bạn có thể không cần plugin zsh để hoạt động này ): credit
Tùy chọn> Cấu hình> Mặc định> Chung> Thư mục làm việc> Sử dụng lại tùy chọn thư mục của phiên trước đó
Đó là tất cả những gì bạn cần làm!
rails
sử đang chạy và tôi cố gắng mở một cửa sổ mới thông qua lệnh-n, tôi sẽ quay lại thư mục chính của mình.
Một tùy chọn khác hiện có sẵn trong Mac OS X Lion là sử dụng tính năng tích hợp sẵn. Nó sử dụng 'chuỗi thoát' để tìm ra thư mục hiện tại. Đối với tôi nó hoạt động nếu tôi sử dụng các lệnh này trong .zshrc:
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
cũng có thể sử dụng PS1
(đối với Bash, từ wiki này ):
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
nơi \e]2;
là dãy thoát để in mọi thứ trong thanh tiêu đề. Có vẻ như Terminal.app đang lấy thông tin từ đó.
Thêm thông tin:
/etc/bashrc
bạn sẽ thấy rằng nó cũng hỗ trợ mã thoát mới để thông báo cho Terminal của thư mục làm việc bằng file:
URL, có thể xử lý tất cả các tên đường dẫn hợp lệ thông qua mã hóa phần trăm (tiêu đề cửa sổ / tab chỉ có thể chứa một tập hợp con các ký tự ASCII ).
\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?
Đây là một phiên bản rất đơn giản mà tôi đã sử dụng trong bash và cũng hoạt động trong zsh. Nó lưu thư mục hiện tại trong một tệp, sau mỗi lệnh (Không làm tổn thương quá nhiều IMO) và mở một thiết bị đầu cuối mới trong thư mục hiện tại đã lưu.
thêm phần sau vào .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 có vẻ như là một cách để làm điều đó: tab mới, sau đó gdirs để chọn thư mục sâu và voila. Ý tưởng đầu tiên của tôi là làm cho ngăn xếp thư mục được chia sẻ giữa tất cả các tab và thực hiện cd ~ 1 sau tab mới, nhưng tôi không thể tìm ra cách nào để làm điều đó, vì dường như mỗi trường hợp của zsh đều giữ riêng. Chia sẻ lịch sử thông qua một tệp chung, vì vậy có lẽ điều đó cũng có thể được thực hiện ở đây ...
Đây là cách bạn làm điều đó trong bash.
Kịch bản shell này sẽ cho biết (yên lặng theo nghĩa đen, sử dụng Applescript) Terminal.app để mở một tab mới sau đó chuyển sang thư mục hiện tại:
#!/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
Từ bỏ tập lệnh shell ở trên trong một thư mục trong $PATH
(ví dụ / usr / local / bin) của bạn và đảm bảo rằng nó có thể thực thi được:
$ chmod +x /usr/local/bin/nt
( nguồn )
Nếu bạn cần mở tab mới này ngay bây giờ, mà không thay đổi tệp cấu hình hoặc cài đặt plugin mới, hãy chạy nó:
pwd | pbcopy
Sau đó mở tab Terminal mới theo cách thủ công (với T) và trong tab mới:
cd "`pbpaste`"
Cảnh báo : điều này sẽ ghi đè lên nội dung của bảng tạm hệ thống.
Một phương pháp khác, dài hơn không ghi đè lên bảng tạm:
pwd > $TMPDIR/wd
Mở tab mới của bạn.
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
Nếu bạn muốn thư mục thay đổi tự động khi một tab mới được mở, hãy sử dụng plugin dirpersist .
Plugin osx chỉ lưu thư mục cuối cùng nhưng bạn phải chạy lệnh tab
để mở một tab mới, điều này không phải lúc nào cũng có thể (nếu, giả sử, bạn đang chạy một cái gì đó trong tab hiện tại của mình).
Thêm terminalapp vào .zshrc không hiệu quả với tôi nên tôi đã tìm plugin ~/.oh-my-zsh/plugins/terminalapp
và nó cho tôi biết:
# 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.
Các tab mới đã mở trong cùng một thư mục (Cmd + T). Đối với các cửa sổ mới (Cmd + N), giải pháp từ Pieter là đúng:
Tùy chọn> Cấu hình> Mặc định> Chung> Thư mục làm việc> Sử dụng lại tùy chọn thư mục của phiên trước đó