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


41

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

どうしますか?

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

回答:


62

利用OH-マイZshのと同様に、あなたの〜/ .zshrcに「OSX」プラグインを追加することは:

plugins=(osx)

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

plugins=(osx terminalapp)

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

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

以前のセッションディレクトリを再利用するためのiTerm2設定パネルの更新。

あなたがする必要があるのはそれだけです!


1
これはiTermでも機能しますか?
アーミー

1
:それが必要のような@ahmyのルックスgithub.com/robbyrussell/oh-my-zsh/blob/master/plugins/osx/...
philfreo

2
これは、コンソールでプロセスを実行していない限り機能します。実行中などのプロセスがあり、railscommand-nを使用して新しいウィンドウを開こうとすると、ホームディレクトリに戻ります。
YWCAこんにちは

@YWCAHelloこの問題の解決策を見つけましたか?
ミチャウMiszczyszyn 14年

@Miszyバニラバッシュに戻りました:/
YWCAこんにちは14年

23

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

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

使用することも可能ですPS1(Bashの場合、このwikiから):

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

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

詳しくは:


また、oh-my-zshにはデフォルトでこれがあると思います。私は今これを一週間かそこら使用しており、ほとんどそのままで動作します。
ティム

Mac OS X Lion 10.7では、ターミナルはタイトルバーの「プロキシ」アイコンを使用して作業ディレクトリを表示し、同じディレクトリに新しいターミナルを作成するオプションがあり、ターミナルの再開をサポートしています。便宜上、ターミナルはウィンドウ/タブのタイトルの内容を調べて、それらに有効なパス名が含まれているかどうかを確認します。ただし、パーセントエンコーディングを介してすべての有効なパス名を処理できるURL /etc/bashrcを使用して、作業ディレクトリをターミナルに通知するための新しいエスケープコードもサポートしていることがわかりますfile:(ウィンドウ/タブタイトルにはASCII文字のサブセットのみを含めることができます) )。
クリスページ

2
作業ディレクトリを設定するためのエスケープシーケンスは、タイトルを設定するための基本コードと同じです-オペレーティングシステムコマンド(OSC)-0-2の代わりにコード7:\e]7;file://hostname/percent-encoded-pathname\a
クリスページ

3
precmdとpreexecを使用する理由 どうしてchpwd () {print -Pn "\e]2; %~/ \a"}
ニック

1
これによりタイトルバーがどのように更新されるかは理解できますが、これにより新しいタブが前のタブと同じディレクトリに開かれる原因がわかりません。
mareoraft

3

これは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)"

これはクールですが、実際にタブでコマンドを実行して更新する必要があります。これにより、まれに予期しない動作が発生する場合があります。コマンドを実行する代わりにタブを切り替えたときにトリガーされる、使用できる別の機能があるかもしれませんか?
mareoraft

1

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


0

これは、bashで行う方法です。

このシェルスクリプトは、Terminal.appに(文字通り静かに、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

ソース


Mac OS X Lion 10.7以降、デフォルトでは、ターミナルは以前のタブと同じ作業ディレクトリで新しいタブを開始します。したがって、今すぐタブを作成するように手配するだけです。(bashを使用している場合。別のシェルを使用している場合、現在の作業ディレクトリについてTerminalに指示する方法については/ etc / bashrcのコードを参照してください。)
クリスページ

0

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

pwd | pbcopy

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

cd "`pbpaste`"

警告:これにより、システムクリップボードの内容が上書きされます。


クリップボードを上書きしない代替のより長い方法:

pwd > $TMPDIR/wd

新しいタブを開きます。

cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd

0

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


0

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

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


0

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.

0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.