Abra uma nova aba no mesmo diretório

41

Digamos que você esteja na pasta / very / cool / e / profundamente / aninhada /. E você deseja abrir uma nova guia de terminal na mesma pasta.

Como você faria isso?

Eu uso o Mac OS e o Zsh.

    
por Nerian 13.01.2011 / 18:36

9 respostas

59

Use Oh-My-Zsh e adicione o plugin 'osx' em seu ~ / .zshrc como:

plugins=(osx)

Se você usa o Terminal App do OSX, você também precisa adicionar o plugin terminalapp : crédito

plugins=(osx terminalapp)

Se você usa o iTerm, precisa definir uma opção de configuração ( Note que você pode não precisar dos plugins zsh para que isso funcione ): crédito

Preferences > Profiles > Default > General > Working Directory > Reuse previous session's directory option

Isso é tudo que você precisa fazer!

    
por 06.03.2012 / 21:17
21

Outra opção agora disponível no Mac OS X Lion é usar o recurso interno. Ele usa 'seqüências de escape' para descobrir o diretório atual. Para mim funciona se eu usar esses comandos no meu .zshrc:

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

também é possível usar PS1 (para o Bash, de este wiki ):

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

onde \e]2; é a seqüência de escape para imprimir coisas na barra de título. parece que o Terminal.app está obtendo suas informações de lá.

Mais informações:

por 21.07.2011 / 11:42
3

Esta é uma versão muito simples que usei no bash e também funciona no zsh. Ele salva a pasta atual em um arquivo, após cada comando (não ferir muito IMO) e abre um novo terminal na pasta atual salva.

adicione o seguinte a .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)"
    
por 30.09.2014 / 12:22
1

gdirs parece ser uma forma de quase fazê-lo: nova aba, então gdirs para selecionar o diretório e voila. Minha primeira idéia foi tornar o diretório stack compartilhado entre todas as abas e fazer o cd ~ 1 após a nova aba, mas não consigo encontrar como fazer isso, como parece, cada instância do zsh mantém o seu próprio. O compartilhamento de histórico passa por um arquivo comum, então talvez isso possa ser feito aqui também ...

    
por 22.01.2011 / 18:42
0

É assim que você faz no bash.

Este script de shell irá dizer (silenciosamente, literalmente, usando Applescript) Terminal.app para abrir uma nova aba, em seguida, mudar para o diretório atual:

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

… coloque o script de shell acima em um diretório em $PATH (ou seja, / usr / local / bin) e verifique se ele é executável:

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

( fonte )

    
por 13.01.2011 / 19:44
0

Se você precisar abrir esta nova guia agora, sem alterar seus arquivos de configuração ou instalar novos plug-ins, execute este:

pwd | pbcopy

Em seguida, abra uma nova guia Terminal manualmente (com ⌘T) e na nova guia:

cd "'pbpaste'"

Aviso : isso substituirá o conteúdo da área de transferência do sistema.

Um método alternativo e mais longo que não sobrescreve a área de transferência:

pwd > $TMPDIR/wd

Abra sua nova guia.

cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
    
por 07.03.2013 / 09:48
0

Por comentário de Pieter acima, assim que os plug-ins plugins=(git osx) estiverem instalados, você poderá digitar tab e ele abrirá uma nova aba no seu diretório atual.

    
por 02.03.2014 / 02:53
0

Se você quiser que o diretório seja alterado automaticamente quando uma nova guia for aberta, use o dirpersist .

O plug-in osx salva apenas o último diretório, mas você precisa executar o comando tab para abrir uma nova guia, o que nem sempre é possível (se, digamos, você estiver executando algo na sua guia atual). / p>     

por 16.04.2014 / 20:26
0

Adicionar o terminalapp ao .zshrc não funcionou para mim, então procurei o plugin ~/.oh-my-zsh/plugins/terminalapp e ele me diz:

# 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.
    
por 23.01.2016 / 14:14