web-dev-qa-db-fra.com

Ouvrir un nouvel onglet dans le même répertoire

Supposons que vous êtes dans le dossier/very/cool/et/profondément/imbriqué /. Et vous voulez ouvrir un nouvel onglet de terminal dans le même dossier.

Comment feriez-vous cela?

J'utilise Mac OS et Zsh.

41
Nerian

Utilisez Oh-My-Zsh et ajoutez le plugin 'osx' dans votre ~/.zshrc comme:

plugins=(osx)

Si vous utilisez l'application Terminal OSX d'OSX, vous devez également ajouter le plug-in terminalapp: crédit

plugins=(osx terminalapp)

Si vous utilisez iTerm, vous devez définir une option de configuration (. Notez que vous n’avez peut-être pas besoin des plugins zsh pour que cela fonctionne ): crédit

Préférences> Profils> Par défaut> Général> Répertoire de travail> Réutiliser l'option de répertoire de la session précédente

iTerm2 Preferences panel update to reuse previous session directory.

C'est tout ce que vous devez faire!

60
Pieter

Une autre option maintenant disponible dans Mac OS X Lion utilise la fonctionnalité intégrée. Il utilise des "séquences d'échappement" pour trouver le répertoire actuel. Pour moi, cela fonctionne si j'utilise ces commandes dans mon .zshrc:

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

il est également possible d'utiliser PS1 (pour Bash, from this wiki ):

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

\e]2; est la séquence d'échappement permettant d'imprimer des éléments dans la barre de titre. Il semble que Terminal.app tire ses informations de là.

Plus d'information:

21
Tim

C'est une version très simple que j'ai utilisée dans bash et qui fonctionne également en zsh. Il enregistre le dossier actuel dans un fichier, après chaque commande (ne fait pas trop de mal à l'OMI) et ouvre un nouveau terminal dans le dossier actuel enregistré.

ajoutez ce qui suit à . 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)"
3
mjspier

gdirs semble être un moyen de le faire presque: nouvel onglet, puis gdirs pour sélectionner le répertoire deep et le tour est joué. Ma première idée était de faire en sorte que la pile de répertoires soit partagée entre tous les onglets et de faire cd ~ 1 après le nouvel onglet, mais je ne trouve pas comment le faire, car il semble que chaque instance de zsh conserve le sien. Le partage d'historique s'effectue via un fichier commun, vous pouvez donc peut-être le faire ici aussi ...

1
Henno

D'après le commentaire de Pieter ci-dessus, une fois les plugins plugins=(git osx) installés, vous pouvez simplement taper tab et un nouvel onglet s'ouvrira dans votre répertoire actuel.

0
Case

Voici comment vous le faites en bash.

Ce script shell indiquera (en silence, littéralement, à l’aide de Applescript) Terminal.app pour ouvrir un nouvel onglet, puis basculera vers le répertoire actuel:

#!/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

… Placez le script Shell ci-dessus dans un répertoire de votre $PATH (c’est-à-dire/usr/local/bin) et assurez-vous qu’il est exécutable:

$ chmod +x /usr/local/bin/nt

( source )

0
Nifle

De nouveaux onglets s'ouvrent déjà dans le même dossier (Cmd + T). Pour les nouvelles fenêtres (Cmd + N), la solution de Pieter est la bonne:

Préférences> Profils> Par défaut> Général> Répertoire de travail> Réutiliser l'option de répertoire de la session précédente

0
Punnerud

L'ajout de terminalapp à .zshrc n'a pas fonctionné pour moi alors j'ai cherché le plugin ~/.oh-my-zsh/plugins/terminalapp et il m'a dit:

# 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

Si vous voulez que le répertoire change automatiquement quand un nouvel onglet est ouvert, utilisez le plugin dirpersist .

Le plug-in osx ne sauvegarde que le dernier répertoire, mais vous devez exécuter la commande tabpour ouvrir un nouvel onglet, ce qui n'est pas toujours possible (si, par exemple, vous utilisez quelque chose dans votre onglet actuel).

0
garageàtrois

Si vous devez ouvrir ce nouvel onglet maintenant, sans changer vos fichiers de configuration ni installer de nouveaux plugins, lancez ceci:

pwd | pbcopy

Puis ouvrez un nouvel onglet Terminal manuellement (avec ⌘T), et dans le nouvel onglet:

cd "`pbpaste`"

Attention: ceci écrasera le contenu du presse-papiers du système.


Une méthode alternative plus longue qui n'écrase pas le presse-papier:

pwd > $TMPDIR/wd

Ouvrez votre nouvel onglet.

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