Answers:
使用Oh-My-Zsh并在〜/ .zshrc中添加“ osx”插件,如下所示:
plugins=(osx)
如果您使用OSX的Terminal App,则还需要添加terminalapp
插件:credit
plugins=(osx terminalapp)
如果您使用的iTerm,你需要设置一个配置选项(请注意,你可能不需要zsh的插件,这个工作):信贷
首选项>配置文件>默认>常规>工作目录>重用上一个会话的目录选项
这就是您需要做的!
rails
正在运行,并且尝试通过command-n打开一个新窗口,那么我最终回到我的主目录。
Mac OS X Lion现在提供的另一个选项是使用内置功能。它使用“转义序列”来查找当前目录。对我来说,如果我在.zshrc中使用以下命令,它将起作用:
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
在\e]2;
标题栏中打印内容的转义序列在哪里。这似乎是Terminal.app从那里获取其信息。
更多信息:
/etc/bashrc
您会看到它还支持新的转义代码,用于使用file:
URL 通知Terminal工作目录,该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)"
这就是您在bash中的操作方式。
这个shell脚本将告诉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
…将上面的shell脚本放在您的目录$PATH
(即/ usr / local / bin)中,并确保其可执行文件:
$ chmod +x /usr/local/bin/nt
(来源)
如果要在打开新选项卡时自动更改目录,请使用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.