web-dev-qa-db-ja.com

同じディレクトリで新しいタブを開く

/ very/cool/and/deeply/nested/folderにいるとします。また、同じフォルダで新しいターミナルタブを開きたいとします。

どうしますか

Mac OSとZshを使用しています。

43
Nerian

Oh-My-Zsh を使用して、次のように〜/ .zshrcに「osx」プラグインを追加します。

plugins=(osx)

OSXのターミナルアプリを使用する場合は、terminalappプラグインも追加する必要があります。 credit

plugins=(osx terminalapp)

ITermを使用する場合、構成オプションを設定する必要があります(これを機能させるためにzshプラグインが必要ない場合があることに注意してください): credit

設定>プロファイル>デフォルト>一般>作業ディレクトリ>前のセッションのディレクトリを再利用するオプション

iTerm2 Preferences panel update to reuse previous session directory.

これで完了です。

64
Pieter

Mac OS X Lionで現在利用可能なもう1つのオプションは、組み込み機能を使用することです。それは現在のディレクトリを見つけるために「エスケープシーケンス」を使用します。私にとっては、.zshrcで次のコマンドを使用すると機能します。

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

PS1 (Bashの場合 this wiki )から:

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

どこ \e]2;は、タイトルバーに印刷するエスケープシーケンスです。 Terminal.appがそこから情報を取得しているようですようです

詳しくは:

23
Tim

これは私が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)"
4
mjspier

gdirs はほとんどそれを行う方法のようです:新しいタブ、次にgdirsで深いディレクトリと出来上がりを選択します。私の最初のアイデアは、すべてのタブ間でディレクトリスタックを共有し、新しいタブの後にcd〜1を実行することでしたが、zshの各インスタンスが独自のインスタンスを保持しているようで、その方法を見つけることができません。履歴の共有は共通のファイルを介して行われるため、おそらくここでも行うことができます...

1
Henno

上記のPieterのコメントによれば、plugins=(git osx)プラグインがインストールされたら、tabと入力するだけで、現在のディレクトリに新しいタブが開きます。

0
Case

これは、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

ソース

0
Nifle

同じタブで新しいタブが既に開いています(Cmd + T)。新しいウィンドウ(Cmd + N)の場合、Pieterのソリューションが適切です。

[設定]> [プロファイル]> [デフォルト]> [一般]> [作業ディレクトリ]> [前のセッションのディレクトリを再利用]オプション

0
Punnerud

.zshrcにterminalappを追加してもうまくいかなかったので、プラグイン~/.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.
0
Steve Root

新しいタブを開いたときにディレクトリを自動的に変更する場合は、 dirpersist プラグインを使用します。

Osxプラグインは最後のディレクトリのみを保存しますが、コマンドtabを実行して新しいタブを開く必要がありますが、これは常に可能とは限りません(たとえば、現在のタブで何かを実行している場合)。

0
garageàtrois

設定ファイルを変更したり、新しいプラグインをインストールしたりせずに、この新しいタブを今すぐ開く必要がある場合は、次のコマンドを実行します。

pwd | pbcopy

次に、新しいターミナルタブを手動で(⌘Tを使用して)、新しいタブで開きます。

cd "`pbpaste`"

警告:システムクリップボードの内容を上書きします。


クリップボードを上書きしない別の長い方法:

pwd > $TMPDIR/wd

新しいタブを開きます。

cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
0
Rory O'Kane