उसी निर्देशिका में एक नया टैब खोलें


41

कहें कि आप / बहुत / शांत / और / गहराई से / नेस्टेड / फ़ोल्डर में हैं। और आप एक ही फ़ोल्डर में एक नया टर्मिनल टैब खोलना चाहते हैं।

आप वह कैसे करेंगें?

मैं Mac OS और Zsh का उपयोग करता हूं।

जवाबों:


62

ओह-माय-ज़ेड का उपयोग करें और अपने ~ / .zshrc में ' ऑक्स ' प्लगइन जोड़ें:

plugins=(osx)

यदि आप OSX के टर्मिनल ऐप का उपयोग करते हैं, तो आपको terminalappप्लगइन को भी जोड़ना होगा : क्रेडिट

plugins=(osx terminalapp)

यदि आप iTerm का उपयोग करते हैं, तो आपको एक कॉन्फ़िगरेशन विकल्प सेट करने की आवश्यकता है ( ध्यान दें कि आपको इस काम के लिए zsh प्लगइन्स की आवश्यकता नहीं हो सकती है ): क्रेडिट

प्राथमिकताएँ> प्रोफ़ाइल> डिफ़ॉल्ट> सामान्य> कार्यशील निर्देशिका> पिछले सत्र की निर्देशिका विकल्प का पुन: उपयोग करें

iTerm2 वरीयता पैनल अद्यतन पिछले सत्र निर्देशिका का पुन: उपयोग करने के लिए।

आपको बस इतना ही करना है!


1
यह भी iTerm में काम करता है?
अहम्

1
@ ताहि की तरह लग रहा है: github.com/robbyrussell/oh-my-zsh/blob/master/plugins/osx/…
philfreo

2
यह मेरे लिए काम करता है जब तक कि मैं कंसोल में एक प्रक्रिया नहीं चला रहा हूं। यदि मेरे पास एक प्रक्रिया है, तो कहो कि railsचल रहा है, और मैं कमांड-एन के माध्यम से एक नई विंडो खोलने की कोशिश करता हूं, मैं अपने होम डायरेक्टरी में वापस समाप्त करता हूं।
YWCA हैलो

@YWCAHello क्या आपने इस समस्या का समाधान पाया है?
मिचेल मिस्ज़ेसिज़िन

@ मिज़ी मैं वापस वेनिला बैश में चला गया: /
YWCA हैलो

23

मैक ओएस एक्स लॉयन में अब उपलब्ध एक अन्य विकल्प अंतर्निहित सुविधा का उपयोग कर रहा है। यह वर्तमान निर्देशिका का पता लगाने के लिए 'एस्केप सीक्वेंस' का उपयोग करता है। मेरे लिए यह काम करता है अगर मैं अपने .zshrc में इन कमांड का उपयोग करता हूं:

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

इसका उपयोग करना संभव है PS1(बाश के लिए, इस विकी से ):

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

\e]2;शीर्षक में चीजों को मुद्रित करने के लिए भागने का क्रम कहां है। ऐसा लगता है कि Terminal.app वहां से इसकी जानकारी प्राप्त कर रहा है।

अधिक जानकारी:


इसके अलावा, मुझे लगता है कि ओह-माय-ज़श में डिफ़ॉल्ट रूप से यह है। मैं एक या एक सप्ताह के लिए इसका उपयोग कर रहा हूं और यह बॉक्स के बाहर बहुत काम करता है।
टिम

मैक ओएस एक्स लायन 10.7 के रूप में, टर्मिनल शीर्षक बार में "प्रॉक्सी" आइकन का उपयोग करके कार्यशील निर्देशिका प्रदर्शित करेगा, उसी निर्देशिका में नए टर्मिनल बनाने के विकल्प हैं, और फिर से शुरू होने वाले टर्मिनलों का समर्थन करता है। एक सुविधा के रूप में, टर्मिनल विंडो / टैब शीर्षक की सामग्री को देखने के लिए देखेगा कि क्या उनके पास एक वैध मार्गनाम है। हालाँकि, /etc/bashrcआप देखेंगे कि यह file:URL का उपयोग करके कार्यशील निर्देशिका के टर्मिनल को सूचित करने के लिए एक नया एस्केप कोड का भी समर्थन करता है , जो प्रतिशत-एन्कोडिंग के माध्यम से सभी वैध मार्ग को संभाल सकता है (विंडो / टैब शीर्षक में केवल ASCII वर्णों का सबसेट हो सकता है )।
क्रिस पेज

2
वर्किंग डायरेक्टरी को सेट करने के लिए एस्केप सीक्वेंस टाइटल सेट करने के लिए एक ही बेसिक कोड है- ऑपरेटिंग सिस्टम कमांड (OSC) - कोड 7 के बजाय 0-2:\e]7;file://hostname/percent-encoded-pathname\a
क्रिस पेज

3
प्रेडम और प्रीक्सेक का उपयोग क्यों करें? सिर्फ क्यों नहीं chpwd () {print -Pn "\e]2; %~/ \a"}?
निक

1
मैं समझता हूं कि यह शीर्षक पट्टी को कैसे अपडेट करता है, लेकिन मुझे समझ में नहीं आता है कि यह पिछले टैब के समान निर्देशिका में एक नया टैब कैसे खोलता है।
घोड़ीचौथ

3

यह एक बहुत ही सरल संस्करण है जिसका उपयोग मैंने बाश में किया था और जोश में भी काम करता है। यह हर कमांड के बाद एक फाइल में करंट फोल्डर को बचाता है (बहुत ज्यादा 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)"

यह अच्छा है, लेकिन आपको वास्तव में अपडेट करने के लिए टैब में एक कमांड निष्पादित करना होगा। यह दुर्लभ मामलों में अप्रत्याशित व्यवहार का कारण बन सकता है। हो सकता है कि एक अलग फ़ंक्शन है जो हम उपयोग कर सकते हैं जो एक कमांड चलाने के बजाय टैब स्विच करने पर ट्रिगर हो जाता है?
घोड़ीचौथ

1

gdirs लगभग इसे करने के लिए एक तरह से लगता है: नया टैब, फिर गहरी निर्देशिका और वॉइला का चयन करने के लिए gdirs। मेरा पहला विचार नए टैब के बाद डायरेक्टरी स्टैक को सभी टैब के बीच साझा करने और सीडी ~ 1 करने का था, लेकिन मैं यह नहीं कर सकता कि ऐसा कैसे करें, क्योंकि ऐसा लगता है कि zsh का प्रत्येक उदाहरण अपना बना रहता है। इतिहास साझाकरण एक आम फ़ाइल के माध्यम से होता है, इसलिए शायद यहाँ भी किया जा सकता है ...


0

इस तरह आप इसे बाश में करते हैं।

यह शेल स्क्रिप्ट बताएगी (शाब्दिक रूप से, 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 / स्थानीय / बिन) में एक निर्देशिका में ऊपर खोल स्क्रिप्ट रखो और सुनिश्चित करें कि यह निष्पादन योग्य है:

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

( स्रोत )


ध्यान दें कि डिफ़ॉल्ट टर्मिनल द्वारा Mac OS X Lion 10.7 के रूप में, पिछले टैब के समान कार्यशील निर्देशिका में नए टैब शुरू करेगा। इसलिए आपको केवल टैब बनाने की व्यवस्था करने की आवश्यकता है। (यदि आप बैश का उपयोग कर रहे हैं। यदि आप किसी अन्य शेल का उपयोग कर रहे हैं, तो वर्तमान वर्किंग डायरेक्टरी के बारे में टर्मिनल को बताने के लिए / etc / bashrc पर कोड देखें।)
क्रिस पेज

0

यदि आपको इस नई टैब को अभी खोलने की आवश्यकता है, तो अपनी कॉन्फिग फाइल को बदले या नए प्लगइन्स को इंस्टॉल किए बिना, इसे चलाएं:

pwd | pbcopy

फिर एक नया टर्मिनल टैब मैन्युअल रूप से (aT के साथ) खोलें, और नए टैब में:

cd "`pbpaste`"

चेतावनी : यह सिस्टम क्लिपबोर्ड की सामग्री को अधिलेखित कर देगा।


एक वैकल्पिक, लंबी विधि जो क्लिपबोर्ड को अधिलेखित नहीं करती है:

pwd > $TMPDIR/wd

अपना नया टैब खोलें।

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

0

प्रति पीटर की टिप्पणी के बाद, एक बार plugins=(git osx)प्लगइन्स इंस्टॉल हो जाने के बाद, आप बस टाइप कर सकते हैं tabऔर यह आपकी वर्तमान निर्देशिका में एक नया टैब खोलेगा।


0

यदि आप चाहते हैं कि एक नया टैब खोले जाने पर निर्देशिका अपने आप बदल जाए तो dirpersist प्लगइन का उपयोग करें ।

ओएक्सएक्स प्लगइन केवल अंतिम निर्देशिका को बचाता है, लेकिन आपको tabएक नया टैब खोलने के लिए कमांड चलाना होगा , जो हमेशा संभव नहीं है (यदि, कहते हैं, आप अपने वर्तमान टैब में कुछ चला रहे हैं)।


0

टर्मिनल .app को जोड़ना मेरे लिए काम नहीं करता था इसलिए मैंने प्लगइन की तलाश की ~/.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 से समाधान सही है:

प्राथमिकताएँ> प्रोफ़ाइल> डिफ़ॉल्ट> सामान्य> कार्यशील निर्देशिका> पिछले सत्र की निर्देशिका विकल्प का पुन: उपयोग करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.